Joh*_*ith 5 c# multithreading invoke
试图从其他线程更新UI控件.
目前正在使用BeginInvoke,老实说它工作正常,但我一直听说你如何使用SynchronizationContext来做同样的事情.
哪个更受欢迎?
另外,从线程更新UI是不好的做法吗?提出一个事件并让主要表单处理它或者还有其他更好的方法来处理它会更好吗?
对不起,我有些主观的问题,但在线程的世界这么多的选择,我试图抓住他们的分歧,每个人都适用,与写可读和可扩展的代码对未来的最佳实务.
编辑:现在我也看到了TaskScheduler.FromCurrentSynchronizationContext路线也是如此..有很多选择x_x
我喜欢SynchronizationContext过Control.Invoke.存在的危险Control.Invoke是拥有产品存在终身问题Control.如果控件在您尝试使用时Invoke处理,则会影响调用成功的能力.当对话框关闭,视图移动等时会发生这种情况......
SynchronizationContext.Current虽然通常与它所关联的线程一样长寿.它确实具有有限的寿命,因此最终存在相同的问题,但它比a更可预测Control.