【问题标题】:how to use the wpf dispatcher to create a multi UI thread winforms app如何使用 wpf 调度程序创建多 UI 线程 winforms 应用程序
【发布时间】:2011-09-29 14:46:41
【问题描述】:

Martin 在link 中的第二个回答解释了如何在 winforms 应用程序中使用调度程序。这个link 解释了 wpf 方面。所以我的问题是 - 我们可以在 winforms 应用程序中执行此操作吗?如果不是,为什么?谢谢你

更新:我发现这个link 也显示了下面 Henk 提到的多个 app.run 方法。但是它不使用 wpf 调度程序。我想知道在 winforms(我的问题)和多个 app.runs 中使用 wpf dispacther 之间是否存在性能差异

【问题讨论】:

  • 最大的问题:为什么?您可以在 WinForms 中使用 App.Run 启动第二个线程,但这似乎也不是一个好主意。
  • 与我发布的链接中提到的原因相同。在这里粘贴。 “在一个 UI 密集型应用程序(例如,具有大约十个窗口显示实时蒙太奇和记事本数据的交易应用程序)中,生成和布置视觉效果的成本可能变得太高,单个线程无法跟上。”跨度>

标签: c# wpf winforms multithreading dispatcher


【解决方案1】:

无论您做什么,都将被限制为使用 1 个线程(UI 线程)来更新您的窗口(Winforms、WPF、本机代码)。您可以根据需要生成尽可能多的工作线程来完成所有数据收集和准备工作,但是您仍然必须使用 UI 线程来进行更新。查看 Task 或 BackgroundWorker 类来完成这项工作。

【讨论】:

  • 我在问题中发布的文章链接清楚地演示了如何为每个窗口创建单独的消息泵/UI 线程。它有 16 票,并在底部 cmets 中有很多赞誉。这是您在谷歌搜索“多个 ui 线程”时获得的第一篇文章。我在这里想念什么?谢谢
  • @Gullu 我明白了,所以你只需要每个窗口一个消息循环。我会避免在这个级别混合技术。将 WinForms 与 WPF 集成(在任一方向)存在很多问题,我认为在此级别混合它们只会引入不必要的复杂性。是的,Application.Run(form) 将适用于 WinForms,Dispatcher.Run() 将适用于 WPF。无论哪种情况,都会创建并执行消息循环,以满足您的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-29
  • 1970-01-01
相关资源
最近更新 更多