* strong text *我正在測試下面寫的一段TPL代碼。兩個ManagedThreadId顯示不同的數字。因此,我假設,新任務正在非UI線程上運行。爲什麼非UI線程能夠修改WinForm和TPL中的UI控件?
我的問題是該任務如何顯示消息並更改UI控件?我錯過了一些東西。我認爲我需要獲得對UI的SynchronizationContext的引用,並使用它來從其他線程進行UI更改。
//var uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
MessageBox.Show(Thread.CurrentThread.ManagedThreadId.ToString());
Task testTask = new Task(() => {
MessageBox.Show(
Thread.CurrentThread.ManagedThreadId.ToString());
lblTest.Text = "Test";
});
testTask.Start();
增加:
下載VS解決方案here
加2
有人可以測試解決方案,並提到,如果他們得到一個異常或不?
爲什麼駕車通過倒票?對我來說似乎是一個合理的問題。 –