我是否需要针对此方案的多线程WPF应用程序?

时间:2012-02-18 01:41:58

标签: c# .net wpf multithreading

我需要一个在后台运行的应用程序/服务,并在每个月的特定日期生成帐单。 我经历了许多文章,解释了Windows服务和计划任务应用程序之间的区别,并得出一个应用程序适合我的情况的结论。

话虽如此,我想知道是否需要在我的应用程序中使用多线程,因为我理解多线程基本上是在执行长时间运行的任务时创建响应式UI,但由于我的应用程序没有UI,我是否需要实际上有多线程?

单线程应用程序从各种来源(比如数据库,webservice)和多线程应用程序获取数据的性能是否存在差异,我们将每个任务分配给一个线程并最终集成所有输出?

2 个答案:

答案 0 :(得分:4)

通常,像这样的应用程序根本就没有用户界面,在这种情况下,多线程的基本原理在这种情况下可能毫无意义。

话虽如此,是否使用多个线程来处理数据完全是另一个问题。你可以,如果这样做有意义的话。如果这是一个将每月运行一次的应用程序,那么将其保留为单线程可能同样容易,因为可能没有时间限制来完成。

但是,如果您需要快速处理这些项目,则可能需要对应用程序的某些部分进行处理。

  

单线程应用程序从各种来源(比如数据库,webservice)和多线程应用程序获取数据的性能是否存在差异,我们将每个任务分配给一个线程并最终集成所有输出?

通常,是的。这是引入线程的最常见原因 - 它允许您在更短的时间内完成更多工作。然而,它确实增加了相当多的复杂性(取决于场景)。

答案 1 :(得分:1)

如果这两种情况属实,你可能会从多线程程序中获得更快的响应时间:你有一个多核处理器,几乎每个人都这么做。从所有源中提取数据可以按任何顺序完成,并且使用一个线程访问该源不会将其从另一个线程锁定。

在这个原因中使用多个线程的最佳理由是,如果你花了很多时间阻塞;等待别人回应。如果你从硬盘中读取大量数据的速度和磁盘可以提供的数据一样快,那么有两个读取数据的线程不应该给你带来更快的速度。事实上,我认为它会慢一些。但是,如果您从套接字(互联网)获取大量数据,并且您的线程花费相当多的时间等待外部服务器响应(并且您没有使用所有带宽),那么多线程程序可以提高速度。