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 更新時間: