给定
static void Main()
{
Form f = new Form();
f.Show();
Action a = () => MessageBox.Show("hi");
Task.Factory.FromAsync(f.BeginInvoke(a), (ar) => a.EndInvoke(ar));
Console.Read();
}
- 我从未见过消息框显示“hi”。
- 其次,在使用 Async 中的 Task.Factory 时是否仍需要调用 EndInvoke(ar)?
最佳答案
当您从一个线程(而不是 UI 线程)调用 MessageBox 时,它永远不会显示。
处理此问题的正确方法是从您在另一个线程上调用的方法引发一个事件,并让 UI 线程订阅它。在事件处理程序中,您可以编写代码来显示 MessageBox。
关于c# - 为什么消息框从不显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12515604/