ich versuche ein MessageDlg oder Showmessage Fenster in einem Thread zu öffnen, bekomme aber eine Exception. Wo ist mein Fehler oder gibt es eine andere Lösung?
Hintergrund: Mein Programm läuft als Endlosschleife, wie in den Lazarusbeispielen unter singlethread beschrieben. Es holt Daten von einem externen Messgerät und zeigt sie in einem Diagramm an. Das funktioniert recht gut.
Nun benötige ich eine Anwenderbestätigung ohne den Lauf zu unterbrechen. Ich dachte mir einfach ein MessageDlg oder Showmessage Fenster in einem weiteren Thread öffnen und nach der Bestätigung eine Variable setzen und den Thread beenden.
Code: Alles auswählen
{ TMyThread }
procedure TMyThread.ShowStatus;
begin
Form1.Caption := fStatusText;
//showmessage('Threadtest');
end;
procedure TMyThread.Execute;
begin
fStatusText := 'TMyThread Starting...';
Synchronize(@Showstatus);
//showmessage('Threadtest');
end;
constructor TMyThread.Create(CreateSuspended: boolean);
begin
FreeOnTerminate := True;
inherited Create(CreateSuspended);
end;
Wenn ich das Fenster "Showmessage" in der ShowStatus Procedure aktiviere funktioniert das ganze zwar, aber da es durch Synchronize ja eigentlich im Hauptprogramm läuft, steht dieses auch still bis ich reagiert habe. Wenn ich dagegen die Showmessage in den Execute Procedure aktiviere gibt es eine Exception zur Laufzeit.
Konnte im Internet bisher keine Lösung finden
Gruß Bernd