1. 程式人生 > >禁止在視窗介面執行緒中進行執行緒同步或進行耗時的操作。。。

禁止在視窗介面執行緒中進行執行緒同步或進行耗時的操作。。。

最近工作時,經常碰到窗口出現未響應的現象,後面發現原因是這樣的:

1、使用者點選XX按鈕時,在XX按鈕事件中呼叫了aa.dll中的介面XXXAPI_TEST();

2、aa.dll中的介面XXXAPI_TEST()內部有進行執行緒同步的操作。

3、因為執行緒同步的原因,導致了視窗介面執行緒偶發性的出現未響應的現象

經驗教訓:

1、不要在視窗介面執行緒中進行執行緒同步,不然很可能卡死介面執行緒。

2、不要在視窗介面執行緒中進行耗時的操作。

3、呼叫EnterCriticalSection耗費的時間是隨機的,從而導致了視窗介面偶發性卡死。