为什么消息框永远不会显示?

时间:2012-09-20 15:11:47

标签: c#

鉴于

    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)

1 个答案:

答案 0 :(得分:5)

当你从线程调用MessageBox时,除了UI线程之外,它永远不会出现。

处理此问题的正确方法是从您在另一个线程上调用的方法引发事件,并让UI线程订阅它。在事件处理程序中,您可以编写代码来显示MessageBox。