1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| //-----------------------------------------------------------------------------
threadconfig.h
//-----------------------------------------------------------------------------
class TThreadGetConfig : public TThread
{
private:
pSDK FSDK;
pControllersCollection FSubControllers;
protected:
void __fastcall Execute();
public:
__fastcall TThreadGetConfig(pSDK paramSDK, pControllersCollection paramSubControllers);
};
//-----------------------------------------------------------------------------
threadconfig.cpp
//-----------------------------------------------------------------------------
__fastcall TThreadGetConfig::TThreadGetConfig(pSDK paramSDK, pControllersCollection paramSubControllers)
: TThread(true)
{
FSDK = paramSDK;
FSubControllers = paramSubControllers;
FreeOnTerminate = true;
}
void __fastcall TThreadGetConfig::Execute()
{
ReturnValue = (GetSiteConfig() ? 0:1);
Terminate();
}
bool __fastcall TThreadGetConfig::GetSiteConfig()
{
std::vector<TSDK_ConfigData>::iterator ptr_subctrl;
...
try
{
if (!SDK->Connected)
throw Exception("sdk error");
//get data from sdk calls
...
for (ptr_subctrl = subcontrollers.begin(); ptr_subctrl < subcontrollers.end(); ptr_subctrl++)
{
pControllerItem subctrl_item = (pControllerItem)SubControllers->Add();
subctrl_item->Data->Id = ptr_subctrl->id;
subctrl_item->Data->Serial = ptr_subctrl->serial;
...
}
return true;
}
catch(...)
{
}
return false;
}
//-----------------------------------------------------------------------------
main.h
//-----------------------------------------------------------------------------
class TfrmMain : public TForm
{
__published:
...
private:
TThreadGetConfig *thrdGetConfig;
pSDK FSDK;
pControllersCollection FSubControllers;
}
//-----------------------------------------------------------------------------
main.cpp
//-----------------------------------------------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
: TForm(Owner)
{
FSubControllers = new TControllersCollection(NULL);
FSDK = new TSDK();
}
void __fastcall TfrmMain::StartThread()
{
thrdGetConfig = new TThreadGetConfig(
this->SDK,
this->SubControllers);
thrdGetConfig->Resume();
} |
Partager