鉴于
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();
}
答案 0 :(得分:5)
当你从线程调用MessageBox时,除了UI线程之外,它永远不会出现。
处理此问题的正确方法是从您在另一个线程上调用的方法引发事件,并让UI线程订阅它。在事件处理程序中,您可以编写代码来显示MessageBox。