Hallo Experten
In einem Projekt wird in einem OnGet in einem HTTPServer ein Ausdruck eines FAstReport angestoßen.
Weil auf das
GUI zugegriffen wird, soll immer nur EIN ONGet gleichzeitig ausgeführt werden. Es darf NIEMALS zwei GLEICHZEITIG!
In einem anderen Thread gab mir schon jemand den Tipp, alles in einem Synchronize zu kapseln. (siehe Codeschnippel)
Code:
procedure TfrmMain.HTTPServerCommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo;
AResponseInfo: TIdHTTPResponseInfo);
begin
try
TThread.Synchronize(nil,
procedure
begin
if druckerindex > -1 then
begin
frxReportServiceDruck.PrintOptions.Printer := Printer.Printers[druckerindex].Device;
if frxReportServiceDruck.PrepareReport
then frxReportBestellDruck.Print;
end;
ANTWORTEN_ERZEUGEN(AContext, ARequestInfo, AResponseInfo);
// -> AResponseInfo.ContentText
end
);
except
on e:
exception do
begin
AResponseInfo.ContentText := 'Systemfehlermeldung vom Server: ' + e.Message;
end;
end;
end;
Weiß jemand, ob das Drucken mit dem FastReport wieder irgendwie in einen Thread abkapselt?
Ich habe irgendwie den Eindruck, als wenn es möglich ist, dass ein OnGet gerade ANTWORTEN_ERZEUGEN abarbeitet, während ein anderes OnGet gerade den Report druckt.
Ist das möglich?
Markus