【发布时间】:2011-09-20 05:01:43
【问题描述】:
试图从其他线程更新 UI 控件。
目前正在使用 BeginInvoke,老实说,它工作正常,但我不断听到您如何使用 SynchronizationContext 来做同样的事情。
哪个是首选?
另外,从线程更新 UI 是不好的做法吗?引发一个事件并让主窗体处理它会更好,还是还有其他更好的方法可以做到这一点?
抱歉,这个问题有点主观,但线程领域有很多选择,我试图了解它们的差异以及它们各自适用的地方,以及为未来编写可读和可扩展代码的最佳实践.
编辑:现在我也看到了TaskScheduler.FromCurrentSynchronizationContext 路线。有很多选择x_x
【问题讨论】:
-
您通常应该支持线程中更高级别的抽象,以帮助自己陷入成功的陷阱。获得正确的线程是困难的。喜欢 Task 或 BackgroundWorker。
标签: c# multithreading invoke