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  更新时间:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM