zoukankan      html  css  js  c++  java
  • 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;

    到此问题得到最终解决。

  • 相关阅读:
    12.20个人任务总结
    典型用户和用户场景描述
    12.19冲刺总结
    12月18日任务总结
    构建之法阅读笔记02
    构建之法阅读笔记03
    构建之法阅读笔记01
    软件工程个人作业01
    内容提供者
    Pull解析Xml
  • 原文地址:https://www.cnblogs.com/mianli/p/13255113.html
Copyright © 2011-2022 走看看