不停的往Memo中輸出文本信息,滿1000行就clear運行大概一分多鍾就會出錯,
捕捉到的出錯信息如下:
Outof system resources
TScrollingStyleHook.TScrollWindow:句柄無效
TScrollingStyleHook.TScrollWindow:拒絕訪問
TScrollingStyleHook.TScrollWindow:Outof system resources
TMemo:Canvas dose not allow drawing
剛開始懷疑是不是TMemo的bug,單獨新建了一個工程發現不是。
后來在QQ群中一位網友發的一張圖片啟發了我
在線程中加入Delay延時,問題得到解決。
原來計算機也有來不及處理處理數據的時候。
經驗總結:以后在線程中執行記得加上delay。
經過測試發現加上Delay只是延遲了錯誤觸發的時間,實際上時間長了還是會出現Outof system resources錯誤。
繼續找問題,發現線程中有反復使用TBitMap的Canvas,查資料發現Canvas在線程中是不安全的必須要加鎖
於是將代碼改成如下模式:
BitMap.Canvas.Lock;
try
//代碼
finaly
BitMap.Canvas.UnLock;
end;
到此問題得到最終解決。