2010-08-11 5 views

Répondre

1

Je dirais que c'est n'importe quel DependencyObject qui a été créé par l'UIThread.

Je suggère d'utiliser cette méthode d'extension, lorsque vous n'êtes pas sûr ...

public static class Extensions 
{ 
    public static void FastInvoke(this Dispatcher dispatcher, Action action) 
    { 
     if (dispatcher.CheckAccess()) 
      action.Invoke(); 
     else 
      dispatcher.BeginInvoke(action); 
    } 
} 

utiliser comme ceci:

Dispatcher.FastInvoke(delegate 
       { 
        StatusMessageText.Text = "OK"; 
       }); 
+0

qui est une Action de grâce bon début. Je peux également dire que si un élément de l'interface utilisateur est lié à une propriété d'un objet dérivé INotifyPropertyChanged, la modification de la valeur de cette propriété dans un thread d'arrière-plan échouera également. Ainsi, il semblerait que tout élément ou propriété de l'interface utilisateur lié à un élément de l'interface utilisateur provoquera une erreur s'il est accédé par un thread non UI. Y a-t-il d'autres règles? – skj