Fehlermeldung bei Messagebox.

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut

Fehlermeldung bei Messagebox.

Beitragvon haderlump » 21. Nov 2017, 19:26 Fehlermeldung bei Messagebox.

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
haderlump
 
Beiträge: 88
Registriert: 18. Jan 2013, 09:29
OS, Lazarus, FPC: Widows XP, Lazarus 1.6 | 
CPU-Target: Celeron
Nach oben

Beitragvon mse » 22. Nov 2017, 17:49 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 22. Nov 2017, 18:35, insgesamt 2-mal geändert.
mse
 
Beiträge: 1763
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.2,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon Socke » 22. Nov 2017, 18:16 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.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2407
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon haderlump » 25. Nov 2017, 19:02 Re: Fehlermeldung bei Messagebox.

Das Ganze hing mit meinem anderen Beitrag zusammen, der Timer blockierte die ganze Maschine

Gruß Fritz
haderlump
 
Beiträge: 88
Registriert: 18. Jan 2013, 09:29
OS, Lazarus, FPC: Widows XP, Lazarus 1.6 | 
CPU-Target: Celeron
Nach oben

• Themenende •

Zurück zu Freepascal



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried