c# - 如何在 .net 中的主 UI 线程以外的线程上运行 UI?

标签 c# .net winforms multithreading

我知道围绕此还有其他问题,但大多数最终得到的答案是不要按照我将要建议的去做。所以我知道你不应该这样做。这个问题的起因是反正我也想做,怎么办...

这就是为什么我要打破规则...

假设我有一个复杂的应用程序,它是版本 1,我们希望我们的客户在发生崩溃或挂起时向我们提交错误。现在假设我在主窗体的顶部有一个按钮,他们可以单击该按钮来提交报告。

现在假设应用程序由于死锁而挂起...

如果那一小段 UI 和该按钮的处理程序可以存在于主 ui 线程以外的线程上,这样它就不会陷入死锁,那就太好了。单击时,它将收集其他线程的所有调用堆栈并将它们提交给我们的错误报告服务。

现在,了解了场景,这可以在 .net 中完成吗?

最佳答案

是的,在“主线程”之外的另一个线程上创建 UI 并不神奇。始终牢记的重要规则是在创建它的线程上与该 UI 交互。

不过,我觉得你从错误的角度攻击这个问题。您可能应该努力将所有工作推离主线程。这样您就可以最大限度地降低该线程卡住的风险,然后您就不需要诉诸非正统的错误报告解决方案。

关于c# - 如何在 .net 中的主 UI 线程以外的线程上运行 UI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9009710/

相关文章:

c# - Windows 窗体中的 WPF

c# - 在这种情况下,NHibernate 会尝试保存同一个对象两次吗?

c# - 将 C# 翻译成 Powershell

C#.net 从控制台使用 HTMLDocument?

C# struct with enum For Form Position

c# - 如何根据是否可以复制来启用和禁用按钮?

c# - 从csproj文件获取项目输出路径

c# - ASP.NET MVC 自定义 View 路由

c# - 如何访问 DevExpress XtraTreeList 中绑定(bind)到节点的对象?

.net - WinForms 到 WPF - 我们如何从这里到达那里?