Probleme mit einem Thread unter PB 5.0 B5

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Probleme mit einem Thread unter PB 5.0 B5

Beitrag 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.
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win11Pro; PB6.20 LTS]. :allright:
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Probleme mit einem Thread unter PB 5.0 B5

Beitrag 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).
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Re: Probleme mit einem Thread unter PB 5.0 B5

Beitrag 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
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Re: Probleme mit einem Thread unter PB 5.0 B5

Beitrag 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?
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win11Pro; PB6.20 LTS]. :allright:
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Probleme mit einem Thread unter PB 5.0 B5

Beitrag 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).
<)
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Probleme mit einem Thread unter PB 5.0 B5

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
auser
Beiträge: 58
Registriert: 17.05.2011 10:56

Re: Probleme mit einem Thread unter PB 5.0 B5

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Probleme mit einem Thread unter PB 5.0 B5

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: Probleme mit einem Thread unter PB 5.0 B5

Beitrag 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
Antworten