我在博客文章和这里看到很多人,所以在最近的C#版本中,要么避免使用Thread类,要么建议不要使用它(当然,我指的是4.0+,增加了Task & friends)。甚至在此之前,关于普通老线程的功能在许多情况下都可以由ThreadPool类替换这一事实一直存在争议。
此外,其他专门的机制进一步降低了Thread类的吸引力,例如Timer取代了丑陋的Thread + Sleep组合,而对于GUI,我们使用了BackgroundWorker,等等。
尽管如此,对于一些人(包括我自己)来说,Thread似乎仍然是一个非常熟悉的概念,当遇到涉及某种并行执行的任务时,他们会直接使用很好的老Thread类。我最近一直在想是不是该改正我的生活方式了。
所以我的问题是,有没有必要或有用的情况下,使用普通的旧Thread对象而不是上面的结构之一?
发布于 2012-03-28 04:34:14
Thread类并没有过时,它在特殊情况下仍然很有用。
在我工作的地方,我们编写了一个“后台处理器”,作为内容管理系统的一部分:一个Windows服务,它监控目录、电子邮件地址和RSS提要,每当有新的东西出现时,就在它上面执行一个任务--通常是导入数据。
尝试使用线程池并不管用:它试图同时执行太多的东西,并回收磁盘,所以我们直接使用Thread类实现了我们自己的轮询和执行系统。
https://stackoverflow.com/questions/9894821
复制相似问题