Kann es sein, dass ShowMessage(...) nur aus dem Main Thread heraus möglich ist? Ich bekomme da eine Exeption, die darauf hindeutet. Wenn das so ist, was kann ich dann ersatzweise machen ?
Gruß Fritz
Fehlermeldung bei Messagebox.
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Fehlermeldung bei Messagebox.
haderlump hat geschrieben:Kann es sein, dass ShowMessage(...) nur aus dem Main Thread heraus möglich ist?
In MSEgui sind die showmessage() Funktionen thread safe. Es ist ein ziemlicher Aufwand, es kann gut sein, dass dies in Lazarus anders gehandhabt wird.
Ich bekomme da eine Exeption, die darauf hindeutet. Wenn das so ist, was kann ich dann ersatzweise machen ?
Die showmessage() Funktionen in einem synchronize() -
https://www.freepascal.org/docs-html/rt ... onize.html
queue() -
https://www.freepascal.org/docs-html/rt ... queue.html
oder application.queueasynccall() -
http://lazarus-ccr.sourceforge.net/docs ... ccall.html
callback aufrufen oder Variablen für den main thread setzen, wakemainthread aufrufen
http://lazarus-ccr.sourceforge.net/docs ... hread.html
und showmessage() im main thread ausführen.
Zuletzt geändert von mse am Mi 22. Nov 2017, 18:35, insgesamt 2-mal geändert.
-
- Lazarusforum e. V.
- Beiträge: 3158
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Fehlermeldung bei Messagebox.
Ja, alles was die grafische Oberfläche verwendet kann nur im Hauptthread laufen.
Das kannst du z.B. mit der Methode TThread.Synchronize machen.
Das kannst du z.B. mit der Methode TThread.Synchronize machen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 185
- Registriert: Fr 18. Jan 2013, 09:29
- OS, Lazarus, FPC: Windows 10, Windows XP, Lazarus 1.6
- CPU-Target: Celeron
Re: Fehlermeldung bei Messagebox.
Das Ganze hing mit meinem anderen Beitrag zusammen, der Timer blockierte die ganze Maschine
Gruß Fritz
Gruß Fritz