C#:启动多个连接时异步委托与 ThreadPool.QueueUserWorkItem

发布于 2024-07-30 12:59:04 字数 309 浏览 3 评论 0原文

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

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

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

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

I have to send many web service calls out to delete a bunch of records in Amazon SDB (unfortunately, rows can only be deleted one at at time currently).

I am using Amazon's SDB c# library which does not use async WebRequests.

Currently I use ThreadPool.QueueUserWorkItem to queue up a bunch of calls (I configured my connectionManagement maxconnection to allow for a bunch of connections)
this works well..as the request is sent out, it blocks and another request is made.

Is this the wrong way to achieve this goal? Should I be using async delegates and doing BeginInvoke and EndInvoke?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

∞觅青森が 2024-08-06 12:59:04

如果您只需要对一些作业进行排队(不直接返回值),请使用 ThreadPool.QueueUserWorkItem 。 速度更快了。 其他问题(以及一些那里有很棒的博客文章。)

If you just need to queue up some jobs (that don't return values directly) go with ThreadPool.QueueUserWorkItem. It's faster. The difference is covered in other questions (and some great blog entries out there.)

时光磨忆 2024-08-06 12:59:04

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

Going trully async would require to abandon the Amazon library and roll your own, using BeginGetRequestStream/BeginGetResponse (which I would recommend). If you stick with the sync WebRequests, then use QueueUserWorkItem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文