【发布时间】:2009-10-06 10:46:43
【问题描述】:
后台任务是涉及网络 I/O、磁盘 I/O 或其他可能会或可能不会通过网络发生的长时间运行的任务。它通常会与更新 GUI 的代码混在一起,这些代码需要在另一个线程上运行,即 GUI 线程。
简单意味着当打开一个 Form.cs 文件时,源代码与以前一样容易或更容易阅读。在实践中,源代码流仍然必须按照代码执行的顺序顺序读取,而不管它在哪个线程上执行。所有支撑结构都必须可重复使用并隐藏在某个地方,而不是包含在每个表单中。
谷歌搜索 MSDN:发现微软官方认可的解决方案是 System.ComponentModel.BackgroundWorker,它在第二点上(非常!)不足。
(在 System.Windows.Threading.Dispatcher 中还有一个官方认可的 Silverlight/XAML/3.5 解决方案模型。)
【问题讨论】:
-
传统上编写线程代码是一项复杂的任务。就我个人而言,我发现后台工作人员的方式非常简单,与早期的 .Net 日子相比,您必须自定义滚动跨线程操作委托和回调。你能详细说明为什么它没有达到第二点吗?
-
肯定比早期的 dotnet 简单,同意。我在一个团队中工作,我们需要有一个标准的设计模式来做到这一点,我们需要有非常易读的代码才能使协作取得成功。是否足够详细,或者?
-
你因为可读性而打折Bgw?
-
可读性和使用它所需的工作量。请记住,工作量增加了 500 倍,因为这是一个拥有几个大型软件项目的团队,并且需要为每个项目一次又一次地完成这项工作......跨度>
标签: .net winforms multithreading design-patterns