【问题标题】:C#: Asynchronous delegates vs ThreadPool.QueueUserWorkItem when initiating many connectionsC#:启动许多连接时的异步委托与 ThreadPool.QueueUserWorkItem
【发布时间】:2010-11-19 09:41:42
【问题描述】:

我必须发送许多 Web 服务调用来删除 Amazon SDB 中的一堆记录(不幸的是,目前只能一次删除一个行)。

我正在使用不使用异步 WebRequests 的 Amazon 的 SDB c# 库。

目前我使用 ThreadPool.QueueUserWorkItem 来排队一堆调用(我配置了我的 connectionManagement maxconnection 以允许一堆连接) 这很好用..当请求发出时,它会阻塞并发出另一个请求。

这是实现此目标的错误方法吗?我应该使用异步委托并执行 BeginInvoke 和 EndInvoke 吗?

【问题讨论】:

    标签: c# asynchronous delegates amazon-web-services threadpool


    【解决方案1】:

    如果您只需要排队一些作业(不直接返回值),请使用ThreadPool.QueueUserWorkItem。它更快。 other questions 中介绍了不同之处(以及一些很棒的博客文章。)

    【讨论】:

      【解决方案2】:

      真正实现异步需要放弃 Amazon 库并使用 BeginGetRequestStream/BeginGetResponse(我会推荐)推出自己的库。如果您坚持使用同步 WebRequest,请使用 QueueUserWorkItem。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-13
        • 2012-05-29
        • 2020-11-30
        • 1970-01-01
        • 1970-01-01
        • 2017-06-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多