我有多線程的小問題。我使用CreateThread創建自己的線程並在程序啓動時創建它(抱歉,但此時我不能使用VCL線程)。所以我的線程與我的VCL表單一起工作。所有的程序生活第二線程生活。但這裏有一個問題。當VCL表單要終止我的線程時,可以檢查一些表單(類)參數。當然,當我的主窗體已經終止並且一些線程嘗試檢查這種形式的方法時...然後我訪問了違規。從線程訪問
我怎樣才能在我的VCL表格中保證檢查參數?謝謝!
這是我的代碼。
unsigned int WINAPI CheckMutex(LPVOID lpParam)
{
const int def = 20;
int Cnt = def;
UnicodeString text;
while (1)
{
if (!UpdFrm || !UpdFrm->Label8 || UpdFrm->MutexTerminate)
break;
首先檢查指向UpdFrm的指針,但VCL表單可以終止,但指向形式仍然活着。所以這就是爲什麼我檢查現有的一些控制。只有在此之後,我檢查MutexTerminate
在窗體的析構函數中,你可以設置'UdpFrm'變量爲NULL。但是這並不能消除'UdpFrm'可能是非-NULL當你第一次檢查它,然後在你可以訪問它的成員之前變爲NULL。爲什麼不在表單被釋放之前終止線程? – 2013-05-04 00:24:42