C#在真实世界的应用中进行线程化

Gil*_*lla 5 c# multithreading codeplex

毫无疑问,了解线程是非常有趣的,并且有一些非常好的资源可以做到这一点.但是,我的问题是在实际应用程序中将线程明确地应用为设计或开发的一部分.

我已经在C#中使用了一些广泛使用且架构良好的.NET应用程序,但没有发现明确使用的痕迹.由于这是由CLR管理还是有任何特定原因,没有真正的需要?

此外,任何在广泛使用的.NET应用程序中编码的线程示例.在Codelplex或Gooogle Code也欢迎.

SLa*_*aks 5

最简单的使用线程的地方是在GUI中执行长时间操作,同时保持UI响应.

如果在UI线程上执行操作,整个GUI将冻结,直到完成.(因为它不会运行消息循环)
通过在后台线程上执行它,UI将保持响应.

这个BackgroundWorker课在这里很有用.


Jon*_*eet 3

这完全取决于应用程序。

对于需要执行任何重要工作(或执行其他可能长时间运行的任务,例如进行 Web 服务调用)的客户端应用程序,我希望使用后台线程。BackgroundWorker这可以通过显式使用线程池、显式使用并行扩展或显式创建新线程来实现。

根据我的经验,Web 服务和 Web 应用程序不太可能创建自己的线程。您更有可能有效地将每个请求视为具有单独的线程(即使 ASP.NET 在内部移动它)并同步执行所有操作。当然,有些Web应用程序要么异步执行,要么出于其他原因启动线程 - 但我想说这种情况比客户端应用程序出现的频率要低。