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

P.B*_*key 1 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();
    }
Run Code Online (Sandbox Code Playgroud)
  • 我从未看到消息框显示"hi".
  • 其次,在使用Async的Task.Factory时,我还需要调用EndInvoke(ar)吗?

Fre*_*els 5

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

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