在我的WPF应用程序中,我需要执行异步操作,然后需要更新GUI。我需要在不同的时间使用不同的操作多次执行此操作。我知道两种方法可以实现:Dispatcher和BackgroundWorker。
因为一旦选择了一种方法就很难回头,所以我想问一下:哪种方法更好?选择其中一种方法的原因是什么?
谢谢! Pileggi
在我的WPF应用程序中,我需要执行异步操作,然后需要更新GUI。我需要在不同的时间使用不同的操作多次执行此操作。我知道两种方法可以实现:Dispatcher和BackgroundWorker。
因为一旦选择了一种方法就很难回头,所以我想问一下:哪种方法更好?选择其中一种方法的原因是什么?
谢谢! Pileggi
最强大但也最难的方法是使用最低级别的System.Threading.Thread;然而,很容易犯错误,因此并不推荐。多线程编程很难,这是肯定的。然而,如果您想了解所有方面,有很多好的信息可供参考:我们优秀的同行Jon Skeet所写的这篇优秀文章立即脱颖而出(该文章的最后一页还有许多非常有趣的链接)。
在.Net 4.0中,我们有一个不同的选择,即Task Parallel Library。我还没有多少经验,但从我看到的情况来看,它非常令人印象深刻(而PLINQ则非常出色)。如果您有好奇心和资源去学习它,那就是我建议的(毕竟并不需要太多时间来学习)。
bgw.DoWork += (o, e) => MyRealMethod(param);
:) - Alex Paven