[C#] Hoe Thread object laten aanmaken in een ander thread?

Pagina: 1
Acties:

  • nhimf
  • Registratie: September 2000
  • Laatst online: 19-08 10:00

nhimf

Lekker belangrijk allemaal

Topicstarter
Ik probeer een thread een object te laten aanmaken in een andere thread.

Het lijkt goed te gaan totdat ik de parent van het object verander.
Dan krijg ik de melding dat een object is gemaakt in de ene thread niet een parent kan krijgen in een andere thread.

De applicatie is een MDI. Als ik dan een nieuw form aanmaak die als MdiChild moet fungeren, dan gaat het fout zodra ik de MdiParent property zet naar het hoofd Form.
Dit komt dus doordat de child wordt aangemaakt in een andere thread dan dat het hoofd Form draait.

Iemand een idee hoe ik, of het object alsnog een parent kan geven in een andere thread, of dat ik het object in een andere thread laat aanmaken.

edit:

even de melding afgevangen:

System.ArgumentException: Controls created on one thread cannot be parented
to a control on a different thread.

[ Voor 11% gewijzigd door nhimf op 16-04-2003 15:01 ]

Ik stink niet, ik ruik gewoon anders


  • nhimf
  • Registratie: September 2000
  • Laatst online: 19-08 10:00

nhimf

Lekker belangrijk allemaal

Topicstarter
Ok ik heb het al opgelost dmv van de functie Invoke.
Hiermee kan je zorgen dat een methode in de juiste thread wordt uitgevoerd.

Ik stink niet, ik ruik gewoon anders


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:46
* whoami vraagt zich af of dat allemaal wel zo wenselijk is....
Een thread in een andere thread laten prutsen....

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
whoami schreef op 16 April 2003 @ 18:32:
* whoami vraagt zich af of dat allemaal wel zo wenselijk is....
Een thread in een andere thread laten prutsen....
Inderdaad. Beter zou zijn om thread A een teken te geven dat hij iets moet doen vanuit thread B.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • Orphix
  • Registratie: Februari 2000
  • Niet online
whoami schreef op 16 April 2003 @ 18:32:
* whoami vraagt zich af of dat allemaal wel zo wenselijk is....
Een thread in een andere thread laten prutsen....
Och ik ben ook een keer tegen dit probleem aangelopen dat ik op basis van een event van een library een nieuw window wou aanmaken. Wanneer je event wordt aangeroepen zit je echter in een andere thread dan je main applicatie (die de message pumpt). je zit in de thread van de library. Dit betekende dat je nieuw gemaakt window niks deed omdat het geen messages doorkreeg.

Met behulp van Invoke kon het wel en persoonlijk vond ik dat best een aardige oplossing.

Verwijderd

Lijkt me eerder een kwestie van de ene thread de andere een message laten sturen..
Pagina: 1