gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:00:28 24 4
gpt4 key购买 nike

我有一个 WCF 服务方法,我想异步执行一些操作(以便在返回调用者时几乎没有额外延迟)。在方法中生成 System.ComponentModel.BackgroundWorker 是否安全?我实际上会用它来调用其他服务方法之一,所以如果有一种方法可以异步调用其中一个方法,那就行得通了。

BackgroundWorker 是可行的方法,还是有更好的方法或在 WCF 服务中执行此操作有问题?

最佳答案

BackgroundWorker 实际上更适合在 UI 中使用。在服务器上,您应该考虑改用 ThreadPool。

when-to-use-thread-pool-in-c关于何时使用线程池的文章很好。本质上,出于多种原因,在服务器上处理请求时通常最好使用线程池。例如,随着时间的推移,您不会产生创建新线程的额外开销,并且池在任何给定时间对事件线程的总数进行限制,这有助于在负载下节省系统资源。

一般 BackgroundWorker 是在需要由 GUI 应用程序执行后台任务时讨论的。例如,System.ComponentModel.BackgroundWorker 的 MSDN 页面专门指一个 UI 用例:

The BackgroundWorker class allows you to run an operation on a separate, dedicated thread. Time-consuming operations like downloads and database transactions can cause your user interface (UI) to seem as though it has stopped responding while they are running. When you want a responsive UI and you are faced with long delays associated with such operations, the BackgroundWorker class provides a convenient solution.

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

关于WCF:在服务器上生成异步工作线程是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2240251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com