【问题标题】:Winforms multithreading scenario questionWinforms多线程场景问题
【发布时间】:2009-03-25 11:00:46
【问题描述】:

今天早上,我从我的一位同事那里看到了一些奇怪的代码。在一个 winforms 应用程序中,整个 Mainform 被作为参考提供给一个线程。 他这样做是为了调用表单中的方法。没有与 UI 交互,只是简单的计算方法。 我已经确定这不是最佳实践,但我想知道一些事情。如果我从线程内部调用 Mainform 中的方法,这些方法是否仍作为多线程处理?还是它们在 Mainform 中运行? 当我从线程调用 Mainfrom 中的方法时,UI 线程会受到影响吗?

【问题讨论】:

    标签: winforms multithreading


    【解决方案1】:

    从不同线程调用的表单中的函数将在调用它们的线程上运行,并且对 GUI 线程没有影响。作为副作用,这意味着如果你调用一个与 GUI 交互的函数,你会得到一个异常。

    如果您希望在 GUI 线程上调用它们,最简单的方法是调用 Control.Invoke(...),这会使您传入的委托在 GUI 线程上执行,从而允许 GUI 交互。

    【讨论】:

      猜你喜欢
      • 2010-10-10
      • 2016-09-19
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      相关资源
      最近更新 更多