2010-05-24 62 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