線程1開(kāi)的子線程可以用一個(gè)線程(池)來(lái)代替,OnButton1_Click()在實(shí)現(xiàn)的時(shí)候告訴線程池:“上帝,給我來(lái)一個(gè)線程吧,我要……”
個(gè)人感覺(jué)搞錯(cuò)了方向,可能的原因有2種
1、死鎖,可能性不大,因?yàn)椴⒉皇敲看味疾恍校?
2、工作線程執(zhí)行了更新界面的操作,且通過(guò)調(diào)用引用控件的方法來(lái)更新的。因?yàn)榭丶椒ㄕ{(diào)用實(shí)際上是SendMessage,應(yīng)該用PostMessage就不會(huì)錯(cuò)了。
考慮如下情況:
按下按鈕,界面線程執(zhí)行OnButton,等待工作者線程釋放鎖;
在同一時(shí)刻工作者線程更新界面,因?yàn)槿魏谓缑娓聦?shí)際上都是界面線程完成(通過(guò)消息隊(duì)列),如果用的是SendMessage模式,工作者線程必須等待完成才可以走一下步,而等待完成的前提是OnButton完成。
這樣就OnButton在等待鎖,工作者線程在等待OnButton完成才可以釋放鎖,無(wú)響應(yīng)了,所以工作者線程更新,應(yīng)該用PostMessage。