Grüße,
ich lese immer wieder in der MSDN folgenden Satz:
Die Frage die sich mir, vor Allem bei DepencyObjects, stellt, ist, warum Instanzmember dieses nicht gewährleisten.
In der Theorie könnten doch alle Member(Ich geh erstmal nur von Properties aus) eigentlich die "threadsicheren" Klassenmethoden aufrufen.
Ich stell mir das in etwa so vor:
private delegate object GetValueDelegate(DependencyObject obj, DependencyProperty dp);
private static object GetValue(DependencyObject obj, DependencyProperty dp)
{
if (obj.CheckAccess())
return obj.GetValue(dp);
return obj.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new GetValueDelegate(GetValue), obj, dp);
}
private delegate void SetValueDelegate(DependencyObject obj, DependencyProperty dp, object value);
private static void SetValue(DependencyObject obj, DependencyProperty dp, object value)
{
if (obj.CheckAccess())
obj.SetValue(dp, obj);
else
obj.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new SetValueDelegate(SetValue), obj, dp, value);
}
public object Item
{
get { return GetValue(this, ItemProperty); }
set { return SetValue(this, ItemProperty, value); }
}
Bevor ich aber irgendwie ein Designproblem verursache wollt ich lieber nachfragen, ob es einen besonderen Grund dafür gibt.
Ähnliches könnte man natürlich auch mit Methoden veranstalten.