Threadübergreifend
Verfasst: Mo, 21. Okt 2019 15:15
mir fällt kein besserer Titel ein.
Folgendes Szenario:
Ich habe ein Menue, in dem ein Browse mit Dataobjects angezeigt wird. In dem Browse kann ich einen Satz auswählen, der dann in einem neuen Thread berbeitet werden kann. Wenn der Thread beendet wird, dann soll in dem ersten Menue ein Update auf das Dataobject nebst dem Browse erfolgen. Clever wie ich war, habe ich den Thread über einen Button aufgerufen, die Änderung gemacht und dann ein Update auf das Dataobject machen wollen, was aber kläglich scheiterte, weil die DBF aus dem 1. Menu im neuen Thread nicht zur Verfügung stehen. Ok, dachte ich mir sei schlau, ruf über den Action Slot des Buttons den Thread auf und wenn der vorbei ist, dann die Updateroutine des 1.Menue. Tja, da mußte ich dann feststellen, das es ja auch nicht geht, weil der neue thread ja parallel aufgerufen wird und sofort die Updateroutine durchläuft. Ist ja nicht wie ein Aufruf von verschiedenen Funktionen nacheinander.
Gibt es für mein Problem eine unkomplizierte Lösung?
Eine Idee wurde mir vorgeschlagen, dem 1. Menu ein Event aus dem Thread zuzuschustern, auf das dann das 1.Menue reagieren kann und selbstständig bei jeder Änderung ein Refresh durchführt bei jeder gemachten Änderung im Thread. Das finde ich auch nicht schlecht, aber wie programmiere sowas unter express++? Kann man im DCREAG Gui sowas angeben? Muß ich dafür einen Handlerblock anlegen? Wie verhält sich dann der urspüngliche Eventhandler? Muß ich was beachten?
Folgendes Szenario:
Ich habe ein Menue, in dem ein Browse mit Dataobjects angezeigt wird. In dem Browse kann ich einen Satz auswählen, der dann in einem neuen Thread berbeitet werden kann. Wenn der Thread beendet wird, dann soll in dem ersten Menue ein Update auf das Dataobject nebst dem Browse erfolgen. Clever wie ich war, habe ich den Thread über einen Button aufgerufen, die Änderung gemacht und dann ein Update auf das Dataobject machen wollen, was aber kläglich scheiterte, weil die DBF aus dem 1. Menu im neuen Thread nicht zur Verfügung stehen. Ok, dachte ich mir sei schlau, ruf über den Action Slot des Buttons den Thread auf und wenn der vorbei ist, dann die Updateroutine des 1.Menue. Tja, da mußte ich dann feststellen, das es ja auch nicht geht, weil der neue thread ja parallel aufgerufen wird und sofort die Updateroutine durchläuft. Ist ja nicht wie ein Aufruf von verschiedenen Funktionen nacheinander.
Gibt es für mein Problem eine unkomplizierte Lösung?
Eine Idee wurde mir vorgeschlagen, dem 1. Menu ein Event aus dem Thread zuzuschustern, auf das dann das 1.Menue reagieren kann und selbstständig bei jeder Änderung ein Refresh durchführt bei jeder gemachten Änderung im Thread. Das finde ich auch nicht schlecht, aber wie programmiere sowas unter express++? Kann man im DCREAG Gui sowas angeben? Muß ich dafür einen Handlerblock anlegen? Wie verhält sich dann der urspüngliche Eventhandler? Muß ich was beachten?