2010-05-24 66 views
2

可能重複:
.NET Controls: Why aren’t all calls thread-safe?爲什麼.NET不允許跨線程操作?

這個問題不是關於什麼是跨線程操作,以及如何避免它,但爲什麼.NET框架的內部機制不允許一個跨線程操作。

我不明白爲什麼SerialPort DataReceived事件無法更新我的窗體上的簡單文本框,爲什麼使用委託這是可能的?

+0

@ChrisF:沒有什麼「可能」關於它。 – Richard 2010-05-24 11:17:50

+0

@Richard - 當第一個人將問題標記爲重複時,評論會自動添加。一旦它被實際關閉,它會被替換爲問題主體的編輯。 – ChrisF 2010-05-24 11:23:19

+0

@ChrisF:之前沒有注意到...(但仍然適用:-)) – Richard 2010-05-24 11:39:56

回答

2

.NET允許跨線程操作。但你應該安全地處理它。使用Invoke/BeginInvoke方法進行跨線程操作。調用意味着「嘿,文本框!請在有空時更新自己。」這裏是一個使用的例子on MSDN