C# dispatcher probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

nadat ik in een bepaalde event handler gekomen ben moet ik een object instantieren.
De constructor van dit object bevat echter de aanmaak van een MediaElement:

m_videoMedia = new MediaElement();

Ik krijg hierdoor threading problemen: Wanneer ik tijdens debuggen bij deze regel kom krijg ik een error "De aanroep-thread moet STA zijn, omdat dit voor veel UI-onderdelen vereist is."

Ik weet dat dit opgelost kan worden met :

Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(() => { m_videoMedia = new MediaElement(); }));

Maar daarvoor moet ik wel de dispatcher instantie in die constructor zien te hebben en dat heb ik dus totaal niet:s

Iemand tips voor dit probleem?

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 08-09 11:33
Probeer eens [STAThread] te gebruiken?

Een andere oplossing kan zijn het invoken van het hele event op het main thread, misschien heb je in de class waar je het event wilt vuren wel een referentie naar het main thread?

@ Pedorus hier onder, volgens mij is dit automatisch zo in .net

[ Voor 13% gewijzigd door roy-t op 18-03-2010 12:11 ]

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Waarom heb je je main thread in vredesnaam MTA gemaakt? Dat lijkt me niet echt handig, en het is daarom ook niet bepaald standaard. Wat dat te gaat is de foutmelding zeer omschrijvend. Mocht je wat MTA-dingen willen doen, gebruik daarvoor dan gewoon een aparte thread die MTA is, maar niet de main-UI-thread.
offtopic:
De duivel lijkt in je code geslopen te zijn. Met [code=c#]-tags heb je dat tenminste al niet. :+

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 13-07 01:53

Korben

() => {};

Kijk eens naar Dispatcher.CurrentDispatcher of Dispatcher.FromThread. Verder was het misschien wel handig geweest om te vermelden dat het om WPF/Silverlight gaat.

[ Voor 19% gewijzigd door Korben op 18-03-2010 11:22 ]

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?