如何确保代码在vb.net中的主线程上运行?

时间:2012-01-21 15:25:19

标签: vb.net multithreading main

在目标c中这样做很容易,但我不知道如何在vb.net中这样做

更新: 我知道control.invoke。但是control.invoke需要一个可能在程序之间改变的控件。什么是更简单的方法?

所以是的程序是winform。但是,我需要一个不依赖于任何特定控件的解决方案。如果是这样的话我实际上不需要在主线程上运行东西吗?

2 个答案:

答案 0 :(得分:1)

“确保”是什么意思。您是否希望能够从正在运行的线程中检查它是否在主线程上,或者您是否希望在代码实际运行之前以编程方式说它必须只在主线程上运行。

您是否尝试从辅助线程更新UI?如果是这样,通常有更好的方法(取决于应用程序类型),而不是检查线程本身。例如,在WinForms应用程序中,通过检查InvokeRequired,您实际上可以安全地询问大多数控件是否需要跨线程调用。如果为true,则可以将控件传递给Delegate以运行您的代码,该代码将把它放在主UI线程上。

答案 1 :(得分:0)

没有人做这件事。所以我做了我知道的唯一方式。拥有一个全局变量并同步该全局变量。它不保证线程将在相同的UI线程上运行。但是,它保证代码不会同时运行。这就是我想要的。