Q
線程通訊
2
A
回答
3
這是更簡單使用.NET 4.0的Task
類:
private void button_Click(object sender, EventArgs e)
{
Task.Factory.StartNew(() =>
{
return DoSomeOperation();
}).ContinueWith(t =>
{
var result = t.Result;
this.textBox.Text = result.ToString(); // Set your text box
}, TaskScheduler.FromCurrentSynchronizationContext());
}
如果您使用.NET 4.5,您可以簡化這個進一步使用新的異步支持:
private async void button_Click(object sender, EventArgs e)
{
var result = await Task.Run(() =>
{
// This runs on a ThreadPool thread
return DoSomeOperation();
});
this.textBox.Text = result.ToString();
}
0
您需要使用Control.Invoke
來在自己的線程中操作表單。
0
簡單地說,在螺紋操作結束:
/// ... your code here
string newText = ...
textBox.Invoke((MethodInvoker) delegate {
textBox.Text = newText;
});
的Control.Invoke
用法使用消息隊列中,以手工作到UI線程,所以它是執行textBox.Text = newText;
線UI線程。
0
使用BackgroundWorker
,將任務分配給DoWork
事件,並使用RunWorkerCompleted
事件更新文本框。然後你可以用RunWorkerAsync()
開始任務。
0
相關問題
- 1. 兩條線程通訊
- 2. C#多線程和串口通訊
- 3. iPhone的多線程操作通訊錄
- 4. 串口通訊工程
- 5. 子流程通訊。 C++
- 6. PHP通訊郵件程序
- 7. 過程通訊,JavaSpaces的
- 8. Android NFC(近距離無線通訊)
- 9. java多線程服務器客戶端通訊
- 10. Opengl與串行通訊的另一個線程
- 11. 串行通訊
- 12. Android通訊
- 13. Form Form通訊
- 14. c通訊#
- 15. 通訊爲CI
- 16. Howto:PHP/Javascript通訊
- 17. 藍牙通訊
- 18. 多頁通訊
- 19. 串口通訊
- 20. 聊天通訊
- 21. Android USB通訊
- 22. 藍牙通訊
- 23. iPhone TCP通訊
- 24. C++通訊錄
- 25. 串行通訊
- 26. GPRS + GPS通訊
- 27. 通訊在Python
- 28. USB通訊API
- 29. 豆莢通訊
- 30. erlang進程通訊(代碼錯誤)
好吧,我會打電話給*「可疑」*「簡單」。它*可能會更簡單,如果你只是使用'await',默認情況下,IIRC使用sync-context –
@MarcGravell我覺得這比調用調用的線程簡單得多,但這是個人偏好。等待的好點 - 我也會把它添加爲一個選項。 –