線程1開的子線程可以用一個線程(池)來代替,OnButton1_Click()在實現(xiàn)的時候告訴線程池:“上帝,給我來一個線程吧,我要……”
個人感覺搞錯了方向,可能的原因有2種
1、死鎖,可能性不大,因為并不是每次都不行;
2、工作線程執(zhí)行了更新界面的操作,且通過調(diào)用引用控件的方法來更新的。因為控件方法調(diào)用實際上是SendMessage,應該用PostMessage就不會錯了。
考慮如下情況:
按下按鈕,界面線程執(zhí)行OnButton,等待工作者線程釋放鎖;
在同一時刻工作者線程更新界面,因為任何界面更新實際上都是界面線程完成(通過消息隊列),如果用的是SendMessage模式,工作者線程必須等待完成才可以走一下步,而等待完成的前提是OnButton完成。
這樣就OnButton在等待鎖,工作者線程在等待OnButton完成才可以釋放鎖,無響應了,所以工作者線程更新,應該用PostMessage。