線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1290
推到 Plurk!
推到 Facebook!

如何在thread結束時,自動傳送一個Message給main thread

尚未結案
hanklin
一般會員


發表:3
回覆:3
積分:1
註冊:2003-03-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-20 11:03:35 IP:61.57.xxx.xxx 未訂閱
以下是我的程式碼:    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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-20 16:22:05 IP:61.231.xxx.xxx 未訂閱
建議您改用 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
系統時間:2024-04-18 11:28:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!