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

时间:2009-08-13 17:54:31

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

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

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

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

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

2 个答案:

答案 0 :(得分:4)

如果您只需要排队一些工作(不直接返回值),请使用ThreadPool.QueueUserWorkItem。它更快。 other questions(以及一些很棒的博客条目)中介绍了这种差异。

答案 1 :(得分:2)

使用BeginGetRequestStream / BeginGetResponse(我建议),去异步需要放弃亚马逊库并自己滚动。如果您坚持使用同步WebRequests,请使用QueueUserWorkItem。