c# - 为什么消息框从不显示?

标签 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)

最佳答案

当您从一个线程(而不是 UI 线程)调用 MessageBox 时,它永远不会显示。

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

关于c# - 为什么消息框从不显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12515604/

相关文章:

c# - 连接池是否应该比保持连接打开慢得多?

c# - 是否可以在 C# 中编写将在 Excel 中运行的 ActiveX 控件?

C# NPOI 库和无效的 zip 压缩

c# - 在自定义 ModelBinder 中使用 Request.Body

c# - 等效于 WinForms TextBox.WPF 中的验证事件

c# - 如何将 SQL bigint 转换为等效的 C#

c# - Linq/Lambda OrderBy Delegate for List<string> of IP Addresses

c# - 如何处理异步运行方法中的异常?

c# - 在 Oracle 中生成 .Net 报价

c# - 如何在自定义控件的 View 模型中绑定(bind)依赖属性