Seite 1 von 1

Probleme mit TextGadget bei Thread-Ausführung

Verfasst: 02.07.2014 19:33
von dl5ndh
Hallo,
vielleicht kann mir jemand helfen. Ich benutze die Version 4.51 und habe ein Programm geschrieben,
bei welchem ein Thread unausweichbar ist. Ein harmloses, aber unschönes Problem habe ich:
Am Beginn des Aufrufes einer Procedure als Thread melde ich auf der Hauptseite mittels Textgadget
den Text "Auswertung" in roter Farbe. Nach Beendigung der Procedure sollte an derselben Stelle im Hauptprogramm
der Text "Angehalten" in schwarzer Farbe stehen. Das geschieht aber nicht ganz. Der gewünschte
Text "Angehalten" erscheint nicht, vielmehr bleibt der Text "Auswertung" dort stehen, allerdings ändert
sich die Schriftfarbe von rot auf schwarz.
Woran liegt das, muß man solche Aufrufe bei Verwendung eins Threads anders verwalten?

Viele Grüße und danke schon mal für die Antworten

Gruß
Gerhard

Re: Probleme mit TextGadget bei Thread-Ausführung

Verfasst: 02.07.2014 19:40
von STARGÅTE
Frage 1: Warum nutzt du nicht eine aktuelle Version? Die neueren PB-Versionen beheben u.a. Bugs und haben mehr funktionen.
Frage 2: Hast du Thread-Safe aktiviert?
Frage 3: Wo ist der Quellcode? Oder kannst du einen keinen Code schreiben der das Problem reproduziert?

Ich weiß nicht, ob Gadgets schon damals Threadsicher waren, vermutlich nicht.
EIne Möglichkeit wäre also, wenn du eine eigene Variable setzt, die im Hauptprogramm gelesen wird, und dann dort das Gadget ändert (und nicht der Thread).

Re: Probleme mit TextGadget bei Thread-Ausführung

Verfasst: 02.07.2014 20:35
von dl5ndh
Hallo,
danke für die Antwort. Ich hatte vor vielen Jahren mein PureBASIC gekauft. Es hieß damals, ich erhalte
für immer die Updates. Tja, und dann kam ich bis zur 4.51 und jetzt müßte ich eine neue Version kaufen.
Vielleicht mache ich das ja auch noch mal.
Quelltext? Ohjee, ich denke zum Posten ist's ein bisserl viel.
Ich denke mal, da ist ein Bug drin und deshalb weiß die Hauptseite nicht mehr, was für einen
Text ich dort posten will. Naja, ich finde vielleicht eine Lösung.
Trotzdem vielen Dank und bis bald

Gruß
Gerhard

Re: Probleme mit TextGadget bei Thread-Ausführung

Verfasst: 04.07.2014 10:03
von hyperG
In Threads sollte man nur sehr kleine Programmteile stecken, die dann wirklich parallel und super schnell laufen sollen.
Für langsame Teile wie Textanzeigen, kann man pseudo multitasking verwenden (PostMessage usw.).

Um sicherzugehen, dass alle Text-Botschaften (Egal ob Ein- oder Ausgabe, also Get- oder SetGadget) komplett abgearbeitet werden, kann man eine Zeile

Code: Alles auswählen

While WindowEvent() : Wend ;DoEvents()
einfügen.

Bei Threads vermeide ich den ganzen Botschaftensalat mit globalen String-Arrays.
Nach Beendigung des Threads kann der Text dann ausgegeben werden:

Code: Alles auswählen

...
WaitThread(aThread.i(I))
SetGadgetText(String_Ausgabe,g_Ausgabe(I).s)
While WindowEvent() : Wend

Re: Probleme mit TextGadget bei Thread-Ausführung

Verfasst: 05.07.2014 07:39
von dl5ndh
Danke allen. Ich mußte einen Thread verwenden, weil eine Schleife läuft, in welcher ein
Screendump ausgewertet wird. Es geht aber jetzt alles (hoffe ich).