線程隱匿窗口在多次切換輸入法時停止呼應?! |
缺席
|
h@visli
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
我的程式涉及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
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |