2009-08-14 6 views
2

Je prévois d'utiliser la classe SynchronizationContext pour effectuer un brassage inter-thread des mises à jour de l'interface utilisateur. L'idée est d'éviter d'avoir une référence à la forme principale (à savoir celui Application.Run(form)) juste pour que je peux dire mainForm.BeginInvoke();.NET SynchronizationContext - Quel thread envoie-t-il?

Cependant, une chose qui ne ressort pas de la documentation, est que lorsque vous appelez SynchronizationContext.Post() , quel thread il appelle l'appel. Est-ce toujours le thread principal de l'application ou le thread qui a initialisé un objet SynchronizationContext, ou quoi?

Répondre

0

Ahh, CodeProject a quelque chose d'utile:

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

Je vais jeter un coup d'oeil. MISE À JOUR: Il s'avère que le thread principal reçoit un objet SynchronizationContext lorsque le premier formulaire est ouvert dessus. C'est le thread de ce contexte de synchronisation dans lequel les appels send et post sont rassemblés.

2

Dépend du type de SynchronizationContext. Lorsque vous étendez la classe, vous pouvez implémenter l'invocation de méthode sur n'importe quel thread que vous aimez (plus ou moins). Les formes de fenêtres seront ramenées au fil principal de l'interface utilisateur. Le wpf utilisera le thread Dispatcher et ainsi de suite.

Questions connexes