如何在thread結束時,自動傳送一個Message給main thread |
尚未結案
|
hanklin
一般會員 發表:3 回覆:3 積分:1 註冊:2003-03-26 發送簡訊給我 |
以下是我的程式碼: DWORD GpibThreadFunction(LPDWORD Param);
bool IsQuit;
HANDLE GpibThread; void __fastcall TForm1::Button1Click(TObject *Sender)
{
DWORD ThreadId; IsQuit = false;
GpibThread = CreateThread (
NULL, // default security
0, // default stack size
(LPTHREAD_START_ROUTINE)GpibThreadFunction,
NULL, // NULL parameter to the thread func
0, // run thread immediately
&ThreadId); if (GpibThread == NULL)
{
printf ("Create GpibThread failed with error %x. Exiting
application.\n",GetLastError());
return;
}
} DWORD GpibThreadFunction(LPDWORD Param)
{
int index; for (index=0;index<10;index )
{
if (IsQuit) break;
Sleep(500);
}
//該如何寫呢(SendMessage?)
} 另外,如何在thread中使用VCL物件,是不是Synchronize(),又該如何使用呢。
謝謝各位。
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
建議您改用 VCL 的 TThread 繼承它再寫一個 請參考 axsoft 版主的作品
■ 用BCB寫的最簡單的一個多執行緒小程式
http://delphi.ktop.com.tw/topic.php?topic_Id=18861 如此,只需要在 Thread 結束時叫用 Form1 的某函式或改某個值即可。
如果有使用 VCL 元件,最好是用 Synchronize,例如:寫好
void __fastcall TmyThread::DoProcessVCL(void) { // 處理一些 VCL 及非 VCL 元件或運算 }在 Thread 的 Execute 中,叫用 Synchronize(DoProcessVCL);即可。 建議您用 Thread 或 執行緒 查一下,本站已有相當多討論執行緒的文章喔。 沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell.... 發表人 - dllee 於 2003/06/20 16:24:05
------
http://www.ViewMove.com |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |