2009-08-14 12 views
2

Ich plane die Verwendung der Klasse SynchronizationContext, um einige Cross-Thread-Marshalling von UI-Updates durchzuführen. Die Idee ist, zu vermeiden, einen Verweis auf die Hauptform haben (dh die man in Application.Run(form)) nur so kann ich sagen mainForm.BeginInvoke();.NET SynchronizationContext - In welchem ​​Thread wird gesendet/gepostet?

jedoch eine Sache, die nicht klar aus der Dokumentation ist, das heißt, wenn Sie anrufen SynchronizationContext.Post() , welchem ​​Thread es den Aufruf anordnet. Ist es immer der Hauptanwendungs-Thread oder der Thread, der zuerst ein Objekt SynchronizationContext initialisiert hat, oder was?

Antwort

0

Ahh, hat Codeproject etwas Nützliches:

http://www.codeproject.com/KB/threads/SynchronizationContext.aspx

Ich werde einen Blick auf das nehmen.

UPDATE: Es stellt sich heraus, dass der Haupt-Thread ein SynchronizationContext Objekt gegeben wird, wenn das erste Formular geöffnet ist. Es ist der Thread dieses Synchronisierungskontexts, an den die Sende- und Nach-Aufrufe weitergeleitet werden.

2

Hängt vom Typ des SynchronizationContext ab. Wenn Sie die Klasse erweitern, können Sie den Methodenaufruf für jeden beliebigen Thread (mehr oder weniger) implementieren. Die Windows-Formulare werden zurück zum Haupt-Thread geleitet. Der WPF verwendet den Dispatcher-Thread und so weiter.

Verwandte Themen