Delphi疑難雜症之:Outof system resources


不停的往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;

到此問題得到最終解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM