对控件的通用WPF多线程访问

时间:2011-04-25 08:28:35

标签: c# wpf thread-safety

我有这个在WinForms中使用的扩展方法,但想知道如何用WPF实现相同的概念。

public static void SafeThreadAction<T>(this T control, Action<T> call)
    where T : System.Windows.Forms.Control
{
  if(control.InvokeRequired)
    control.Invoke(call, control);
  else
    call(control);
}

1 个答案:

答案 0 :(得分:4)

我认为WPF的版本看起来像这样:

public static void SafeThreadAction<T>(this T control, Action<T> call)
    where T : System.Windows.Threading.DispatcherObject
{
  if (!control.Dispatcher.CheckAccess())
    control.Dispatcher.Invoke(call, control);
  else
    call(control);
}