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