2

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

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

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

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

4

2 回答 2

5

如果您只需要排队一些作业(不直接返回值),请使用ThreadPool.QueueUserWorkItem. 它更快。其他问题(以及一些很棒的博客条目)中涵盖了差异。

于 2009-08-13T17:56:09.480 回答
2

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

于 2009-08-13T17:59:29.300 回答