WCF:在服务器上生成异步工作线程安全吗?

WCF:在服务器上生成异步工作线程安全吗?,wcf,asynchronous,Wcf,Asynchronous,我有一个WCF服务方法,我希望异步执行一些操作(这样在返回调用方时就不会有额外的延迟)。在方法中生成System.ComponentModel.BackgroundWorker安全吗?实际上,我将使用它来调用其他服务方法之一,因此,如果有一种方法可以异步调用其中一种方法,这将非常有用 BackgroundWorker是一个不错的选择,还是在WCF服务中有更好的方法或问题?BackgroundWorker更适合在UI中使用。在服务器上,您应该考虑改用线程池 对何时使用线程池有很好的描述。本质上,在

我有一个WCF服务方法,我希望异步执行一些操作(这样在返回调用方时就不会有额外的延迟)。在方法中生成System.ComponentModel.BackgroundWorker安全吗?实际上,我将使用它来调用其他服务方法之一,因此,如果有一种方法可以异步调用其中一种方法,这将非常有用


BackgroundWorker是一个不错的选择,还是在WCF服务中有更好的方法或问题?

BackgroundWorker更适合在UI中使用。在服务器上,您应该考虑改用线程池

对何时使用线程池有很好的描述。本质上,在服务器上处理请求时,出于许多原因,通常最好使用线程池。例如,随着时间的推移,您将不会产生创建新线程的额外开销,并且池会在任何给定时间限制活动线程的总数,这有助于在负载下节省系统资源

通常,当GUI应用程序需要执行后台任务时,会讨论
BackgroundWorker
。例如,
System.ComponentModel.BackgroundWorker
的MSDN页面特别提到一个UI用例:

BackgroundWorker类允许您在单独的专用线程上运行操作。下载和数据库事务等耗时的操作可能会导致用户界面(UI)在运行时停止响应。当您需要一个响应性强的UI并且面临与此类操作相关的长时间延迟时,BackgroundWorker类提供了一个方便的解决方案


这并不是说它不能在服务器端使用,但该类的目的是在UI中使用。

您能否详细说明是什么使BackgroundWorker对UI更有用,以及为什么线程池在这种情况下更好?@Mike请看一下BackgroundWorker命名空间:-)