全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1371
推到 Plurk!
推到 Facebook!

線程隱匿窗口在多次切換輸入法時停止呼應?!

缺席
h@visli
資深會員


發表:103
回覆:429
積分:431
註冊:2004-02-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-09-26 11:21:05 IP:219.134.xxx.xxx 未訂閱
我的程式涉及Socket數據傳輸, 多線程以及Windows消息, 最近測試時發現在多次切換輸入法後(不停的按Ctrl+Shift), 程式停止響應了. 請問這是什麽原因呢?
-------------------------------
經過調試, 我發現問題出在我一個線程模塊中, 我是在一個線程創建一個隱含的窗口(AllocateHwnd(WndProc);), 利用這個窗口來接收Windows消息, 就像TTimer的實現一個, 衹不過TTimer創建的消息接收窗口是在主線程中, 而我的這個消息接收窗口是在子線程中.

當消息接收窗口接收到自定義Windows消息時, 就要在主界面上作出響應(利用Synchronize()方法), 現在當有客戶程序不斷向我的這個程序PostMessage/SendMessage時, 在我的這個程序上不斷切換輸入法(不停的按Ctrl Shift)時, 我的程序就會停止呼應,

我發現就是我的這個消息接收線程停止了響應, 從而導致各個程序停止了響應.

程式檔:
http://delphi.ktop.com.tw/download.php?download=upload/46fb076281a18_MsgTest.rar
------
------------------------
博采眾家之長,奉獻綿薄之力
------------------------
編輯記錄
h@visli 重新編輯於 2007-09-27 09:30:06, 註解 問題出處發現了, 請教原因與解決方案‧
h@visli 重新編輯於 2007-09-27 09:31:39, 註解 添加附檔‧
h@visli 重新編輯於 2007-09-27 09:41:50, 註解 修改標題‧
系統時間:2024-05-18 19:48:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!