2012-01-21 110 views
0

這很容易做到這一點在客觀的c,但我不知道如何做到這一點在vb.net如何確保代碼在vb.net的主線程上運行?

更新: 我知道關於control.invoke。但是,control.invoke需要一個可能因程序而異的控件。更簡單的方法是什麼?

所以是的程序是winform。不過,我需要一個不依賴任何特定控件的解決方案。如果是這樣的話,我不需要在主線程上運行的東西嗎?

+0

這是什麼類型的應用程序?安慰?的WinForms? –

+0

你使用的是什麼UI:WinForms,WPF,Silverlight? –

+0

「主線程」是什麼意思? UI線程是否被認爲是主線程?爲什麼重要的是要確保你在主線上? –

回答

0

沒有身體這個權利。所以我做了我知道的唯一方法。有一個全局變量並同步該全局變量。它不保證線程將在同一個UI線程中運行。但是,它保證代碼不會同時運行。這是我想要的。

1

你是什麼意思的「確保」。你是否希望能夠從正在運行的線程中檢查它是否在主線程中,或者是否希望在代碼實際運行之前以編程方式說出它只能在主線程上運行。

您是否嘗試從輔助線程更新UI?如果是這樣,通常有比檢查線程本身更好的方法(取決於應用程序類型)。例如,在WinForms應用程序中,您可以通過檢查InvokeRequired實際上安全地詢問大多數控件是否需要跨線程調用。如果是true,那麼你可以通過控制Delegate來運行你的代碼,它會把它放在你的主UI線程上。

+0

我知道control.invoke。但是,control.invoke需要一個可能因程序而異的控件。更簡單的方法是什麼? –

相關問題