Dispatcher.Invoke --> Collection.Add (XmlNode.CloneNode(true))
-
Hallo ...
Aus einem Workerthread versuche ich diesen Code
searchData.matchIDCollection.Add(element.CloneNode(true));
...mit nem Dispatcher.Invoke so zu verpacken das das ganze Threadsicher ist. Kann mir da jemand fix bei helfen =?
-
Momentan versuche ich das ganze so ...
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, (SendOrPostCallback)delegate { searchData.matchIDCollection.Add(element.CloneNode(true)); }, element.CloneNode(true));
Der aufrufende Thread kann nicht auf dieses Objekt zugreifen, da sich das Objekt im Besitz eines anderen Threads befindet.
-
Lies dir mal die Dokumentation zu
Dispachter.CurrentDispatcher
aufmerksam durch. Fällt dir nichts auf?Grüssli
-
Ich erstelle einen neuen, da keiner existiert ?
-
shaun1981 schrieb:
Ich erstelle einen neuen, da keiner existiert ?
*nickt, nickt, nickt*
Ein Dispatcher ist immer einem Thread zugeordnet. Du hast Thread TA mit dem für diesen Thread verantwortlichen Dispatcher DA und du hast Thread TB ohne Dispatcher. Wenn du etwas aus TB auf TA ausführen möchstest, musst du dies über DA tun.
Du bist also in TB, rufstDispatcher.CurrentDispatcher
auf, wodurch ein Dispatcher DB für TB erstellt wird und machst darüber denInvoke
, wodurch die Funktion in TB ausgeführt wird. TA oder DA kommen da nie zum EinsatzGrüssli
-
Sehr verständlich. Super. Thanx