zoukankan      html  css  js  c++  java
  • Delphi Thread线程错误:Canvas doesn't allow drawing

    Delphi Thread线程错误:Canvas doesn't allow drawing

    错误原因:在使用Thread线程时,所有UI界面的代码都要进行同步,否则,就会出现这个错误。

    解决方法:

    TThread.Synchronize();
    

    Synchronize 源码:  

    procedure TThread.Synchronize(Method: TThreadMethod);
    begin
      FSynchronize.FThread := Self;
      FSynchronize.FSynchronizeException := nil;
      FSynchronize.FMethod := Method;
      Synchronize(@FSynchronize);
    end;
    
    class procedure TThread.Synchronize(AThread: TThread; AMethod: TThreadMethod);
    var
      SyncRec: TSynchronizeRecord;
    begin
      if AThread <> nil then
        AThread.Synchronize(AMethod)
      else
      begin
        SyncRec.FThread := nil;
        SyncRec.FSynchronizeException := nil;
        SyncRec.FMethod := AMethod;
        TThread.Synchronize(@SyncRec);
      end;
    end;
    
    class procedure TThread.StaticSynchronize(AThread: TThread; AMethod: TThreadMethod);
    begin
      Synchronize(AThread, AMethod);
    end;
    

      

    创建时间:2020.10.13  更新时间:

  • 相关阅读:
    smarty基础
    smarty变量
    Google的Python代码格式化工具YAPF详解
    性能监控工具YourKit
    Scala学习笔记2
    Scala介绍
    线段树
    字符串分割方法
    Trie树
    Scala 学习笔记
  • 原文地址:https://www.cnblogs.com/guorongtao/p/13807386.html
Copyright © 2011-2022 走看看