Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit dem Ausführen eines Threads (https://www.delphipraxis.net/32888-problem-mit-dem-ausfuehren-eines-threads.html)

barnti 29. Okt 2004 09:57


Problem mit dem Ausführen eines Threads
 
Hallo,

ich habe die Reporterzeugung in einen Thread ausgelagert:
Delphi-Quellcode:
procedure TForm_Main.PrintReport(Sender: TObject);
var
  ReportThread: TReportThread;
begin
  ReportThread:= TReportThread.create(true,'Packauftrag',FocusedGrid,0);
...

constructor TReportThread.create(CreateSuspended: Boolean;ReportName: String;
        Grid: TDBGrid; PrinterIndex: Integer);
begin
   // Thread erzeugen und suspendieren
    inherited Create(CreateSuspended);
    // Initialisieren
    FGrid:= Grid;
    FPrinterIndex:= PrinterIndex;
    FReportName:=ReportName;
    // Thread starten
    self.Suspended:= false;
end;

{- TReportThread.Execute }
procedure TReportThread.Execute;
begin
  // Diese Funktion habe ich vorher direkt aus der Anwendung aufgerufen
  // Jetzt ist sie in diesem Thread gekapselt
  DM_Report.PrintReport(FReportName, FGrid,FPrinterIndex);
end;
Mein Problem: Beim Drucken und des eigentlichen Aufrufs 'ExecuteReport' in der Klasse DMReport kommt es öfter zu der Fehlermeldung:
EInvalidOperation with message 'Canvas does not allow drawing'

Diese Meldung tritt aber nicht immer auf. Setze ich beim Aufruf von 'ExecuteReport' einen BreakPoint und lasse die Anwendung von dort weiterlaufen, gibt es keine Fehlermeldung. Auch der direkte Aufruf bevor ich Threads benutzte klappte...?!

Kann mir jemand helfen?

Luckie 29. Okt 2004 10:16

Re: Problem mit dem Ausführen eines Threads
 
Die VCL ist nicht threadsafe. Hast du den text gelesen, den dir Delphi als Komentar in deine ThreadUnit geschrieben hat?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz