Seite 1 von 1

Probleme mit einem Thread unter PB 5.0 B5

Verfasst: 15.10.2012 17:54
von Pelagio
Hallo PB'ler,

in einem Programm lade ich Daten und während das Programm die Daten lädt, läuft auf dem Bildschirm eine einfache Animation ab, damit die Zeit etwas kürzer durch diese Abwechselung erscheint. Diese Animation läuft in einem Thread des Programmes ab. Das Programm habe ich zu Letzt unter PB 4.60 kompiliert. Es Funktioniert. Jetzt wollte ich eine kleine Änderung vornehmen und ließ es unter PB 5.0 Beta5 laufen und bekomme folgende Fehlermeldung:
OpenWindow() can only be called from the main thread.
Am Programm habe ich noch nichts geändert. Ich habe jetzt keinen Code aber das Problem ist, meiner Meinung nach, nicht der Code, der funktioniert unter PB4.6, sondern ob sich unter PB5.0 irgendetwas bezüglich Thread geändert hat.

Re: Probleme mit einem Thread unter PB 5.0 B5

Verfasst: 15.10.2012 18:41
von c4s
Fred hat im englischen Forum geschrieben, dass diese Compiler-Warnung (kein Fehler!) hinzugefügt wurde, weil einfach von so einem Lösungsweg abzuraten ist (wohl speziell unter Linux und Mac).

Re: Probleme mit einem Thread unter PB 5.0 B5

Verfasst: 16.10.2012 01:24
von PMV
So lange du dieses Programm nur unter Windows verwendest
und ansonsten weist, wie unter Windows das Event-Handling
für Fenster funktioniert, kannst du diese Warnung ignorieren.
Unter Linux und Mac ist diese Warnung allerdings bindend.
Wenn das Programm also auch unter Linux/ Mac funktinoieren
soll, ist dein Code nicht stabil und muss geändert werden. :wink:

MFG PMV

Re: Probleme mit einem Thread unter PB 5.0 B5

Verfasst: 16.10.2012 07:46
von Pelagio
Danke für die schnelle Antwort,

das Problem bleibt aber, das die Fehlermeldung auftaucht und das Programm nicht weiter läuft. Ich habe es zwar noch nicht compiliert und ausprobiert ob auch als EXE funktioniert aber warum taucht das Probleme bei älteren PB Versionen nicht auf?

Re: Probleme mit einem Thread unter PB 5.0 B5

Verfasst: 16.10.2012 10:35
von c4s
Hab ich doch bereits beantwortet:
c4s hat geschrieben:Fred hat im englischen Forum geschrieben, dass diese Compiler-Warnung (kein Fehler!) hinzugefügt wurde, weil einfach von so einem Lösungsweg abzuraten ist (wohl speziell unter Linux und Mac).
<)

Re: Probleme mit einem Thread unter PB 5.0 B5

Verfasst: 18.10.2012 14:15
von ts-soft
Hier: http://www.purebasic.fr/english/viewtop ... 01#p393801
ergänzend. Ist also keine CompilerWarnung sondern ein Fehler. Kann nur
mit DisableDebugger / EnableDebugger umgangen werden.

Re: Probleme mit einem Thread unter PB 5.0 B5

Verfasst: 07.02.2013 16:09
von auser
PMV hat geschrieben:diese Warnung ignorieren.
Ist leider keine Warnung noch ein Hinweis sondern doch ein echter Error und der darf auch nicht ohne Konsequenz ignoriert werden. Der Workaround von wegen "DisableDebugger" welcher kurzzeitig vorgeschlagen wurde ist damit also widerrufen (obiger link funzt nicht - und scheinbar weiß das so wie so kaum jemand weil DisableDebugger immer noch empfohlen wurde). -> http://www.purebasic.fr/english/viewtop ... 19#p403619

Re: Probleme mit einem Thread unter PB 5.0 B5

Verfasst: 07.02.2013 16:33
von ts-soft
Wenn man im Thread kein EventLoop von PB nutzt, sondern alles im Callback abarbeitet, sollte es keine Probleme geben, aber
diese Lösung ist natürlich nicht für jedermann geeignet.

Auf keinen Fall darf für das Fenster im Thread ein eventloop von PB genutzt werden, weder im Thread noch im MainProgramm.

Re: Probleme mit einem Thread unter PB 5.0 B5

Verfasst: 30.04.2013 08:29
von Max_der_Held
Moment, ich bin da gerade drübergestolpert -
Ich darf keine Fenster in threads öffnen und verwenden?

Da gerade vier aktuelle Projekte darauf aufbauen, die ich auf Linux portieren möchte, frage ich mich, ob das mit Linux zu tun hat, dass es nicht anders geht, oder ist das einfach Purebasic spezifisch -- Und --
Thomas' Vorschlag windowcallback funktioniert auch auf linux/macos, nur muss ich die Fehlermeldungen beim openwindow umgehen, hab ich das richtig verstanden? [pb 5.11]

Lg
Max