我必须发送许多Web服务调用来删除Amazon SDB中的一堆记录(遗憾的是,目前只能删除一行记录)。
我正在使用亚马逊的SDB c#库,它不使用异步WebRequests。
目前我使用ThreadPool.QueueUserWorkItem来排队一堆调用(我配置了我的connectionManagement maxconnection以允许一堆连接) 这很有效。当请求被发送出去时,它会阻止并发出另一个请求。
这是实现这一目标的错误方法吗?我应该使用异步委托并执行BeginInvoke和EndInvoke吗?
答案 0 :(得分:4)
如果您只需要排队一些工作(不直接返回值),请使用ThreadPool.QueueUserWorkItem
。它更快。 other questions(以及一些很棒的博客条目)中介绍了这种差异。
答案 1 :(得分:2)
使用BeginGetRequestStream / BeginGetResponse(我建议),去异步需要放弃亚马逊库并自己滚动。如果您坚持使用同步WebRequests,请使用QueueUserWorkItem。