2011-05-19 65 views
4

只有UI線程能夠顯示到屏幕上,或者其他線程也可以這樣做嗎?非UI線程可以顯示在屏幕上嗎?

+0

供參考:您可以在一個進程中有多個UI線程。 – 2011-05-19 18:20:18

+0

@Brian:我可以在哪裏瞭解這個?我不知道有多個UI線程。 。 。 – richard 2011-05-19 18:23:53

+1

.NET限制對創建它們的STA線程的GUI控件訪問。您可以使用自己的一組控件創建其他STA線程。 – 2011-05-19 18:27:32

回答

7

不,你只能直接從UI線程訪問UI,但你可以從名帥其它線程,如使用Control.Invoke或control.BegineInvoke/EndInvoke會

檢查this出來的結果

1

您可以使用所有GUI控件的BeginInvoke()成員從後臺線程更改其屬性的值。
如果您使用的是背景工作,您可以使用ReportProgress事件,這更容易。

0

也取決於您是否使用WinForms或WPF,在Winforms中使用Control.Invoke,而在WPF中使用Dispatcher類。 WPF具有更復雜的線程UI調度程序

相關問題