this.Dispatcher.InvokeAsync(
() => {
MessageBoxResult result = MessageBox.Show("111111111111111111111111", "Child process failed", MessageBoxButton.OK);
}
);
this.Dispatcher.InvokeAsync(
() => {
MessageBoxResult result = MessageBox.Show("22222222222222222222222", "Child process failed", MessageBoxButton.OK);
}
);
为什么先显示2222222222,然后显示11111111111
如果我把this.Dispatcher.InvokeAsync
改成this.Dispatcher.Invoke
,订单就对了。有人知道为什么吗?。
Dispatcher.InvokeAsync
本质上是将一条消息放入消息队列,请求在UI线程空闲时运行该方法。
虽然消息框显示了一些消息,但仍将处理这些消息,而此消息可能就是其中之一。因此,第一个消息框将首先显示,过一会儿,第二个消息框会显示在第一个消息的顶部。当您单击第二个消息框时,它看起来就像第一个消息框。
this.Dispatcher.Invoke
也将消息放入消息队列,但在这种情况下,调用者也在等待UI线程处理消息,然后再继续,因此消息框会一个接一个地显示,而不是在顶部。