在目标c中这样做很容易,但我不知道如何在vb.net 中这样做
更新:我知道control.invoke。但是control.invoke需要一个控件,它可能会随着程序的变化而变化。有什么更简单的方法?
所以yes程序是winform。然而,我需要一个不依赖于任何特定控制的解决方案。如果是这样的话,实际上我不需要在主线程上运行东西,是吗?
"确保"是什么意思。你想从正在运行的线程中检查它是否在主线程上,还是想在代码实际运行之前用程序说它必须只在主线程中运行。
您是否正在尝试从辅助线程更新UI?如果是这样,通常有比检查线程本身更好的方法(取决于应用程序类型)。例如,在WinForms应用程序中,您实际上可以通过检查InvokeRequired
来安全地询问大多数控件是否需要跨线程调用。如果为true,则可以向控件传递一个Delegate
来运行代码,该代码将为您将代码放在主UI线程上。
没有人能正确地做到这一点。所以我做了我唯一知道的事。拥有一个全局变量并同步该全局变量。它不能保证线程将在同一个UI线程上运行。但是,它保证代码不会同时运行。这就是我想要的。