Invoke和BeginInvoke都是操作其他线程的方法,区别在于一个是同步的一个异步的,简单来说就是一个是立即执行,另一个是等要操作线程结束后再执行。
简单的例子:
private void C()
{
Debug.WriteLine("c");
}
private void A()
{
Debug.WriteLine("a");
}
private void B()
{
Debug.WriteLine("b");
}
private delegate void BeginInvokeDelegate();
private void Window_Loaded(object sender, RoutedEventArgs e)
{
A();
this.Dispatcher.Invoke(new BeginInvokeDelegate(C));
//this.Dispatcher.BeginInvoke(new BeginInvokeDelegate(C));
B();
}
这个 Invoke执行结果是a,c,b BeginInvoke执行结果是a,b,c