我有一个WCF服务方法,我想异步执行一些操作(这样返回调用者几乎没有额外的延迟).在方法中生成System.ComponentModel.BackgroundWorker是否安全?我实际上是用它来调用其他一个服务方法,所以如果有办法异步调用其中一个,那就可以了.
BackgroundWorker是一种可行的方式,或者在WCF服务中有更好的方法或问题吗?
BackgroundWorker实际上更适合在UI中使用.在服务器上,您应该考虑使用ThreadPool.
when-to-use-thread-pool-in-c对何时使用线程池有一个很好的记录.实质上,在处理服务器上的请求时,出于多种原因通常最好使用线程池.例如,随着时间的推移,您不会产生创建新线程的额外开销,并且池会在任何给定时间限制活动线程的总数,这有助于在负载下节省系统资源.
通常BackgroundWorker
在需要由GUI应用程序执行后台任务时进行讨论.例如,MSDN页面System.ComponentModel.BackgroundWorker
专门用于指示UI用例:
BackgroundWorker类允许您在单独的专用线程上运行操作.下载和数据库事务等耗时的操作可能会导致用户界面(UI)在运行时停止响应.当您需要响应式UI并且遇到与此类操作相关的长时间延迟时,BackgroundWorker类提供了一种方便的解决方案.
这并不是说它不能在服务器端使用,而是该类的意图是在UI中使用.
归档时间: |
|
查看次数: |
954 次 |
最近记录: |