#pragma once #include #include NS_BEGIN(Sia) NS_BEGIN(Api) class CSiaDriveConfig; class AFX_EXT_CLASS CAutoThread { public: CAutoThread(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig); CAutoThread(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig, std::function autoThreadCallback); public: virtual ~CAutoThread(); private: CSiaCurl _siaCurl; CSiaDriveConfig* _siaDriveConfig; HANDLE _stopEvent; std::unique_ptr _thread; std::mutex _startStopMutex; std::function _AutoThreadCallback; protected: virtual void AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig); public: void StartAutoThread(); void StopAutoThread(); }; NS_END(2)