【发布时间】:2017-08-28 17:41:13
【问题描述】:
我想执行一堆 WebRequest,但设置了可以同时启动多少个的阈值。
我遇到了这个LimitedConcurrencyTaskScheduler example 并尝试像这样使用它
scheduler = new LimitedConcurrencyLevelTaskScheduler(1);
taskFactory = new TaskFactory(scheduler);
...
private Task<WebResponse> GetThrottledWebResponse(WebRequest request)
{
return taskFactory.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null);
}
但是我注意到,即使最大并发数为 1,我的任务似乎也以非 FIFO 顺序完成。当我在 LimitedConcurrencyLevelTaskScheduler 中设置断点时,很明显它根本没有被使用。我猜我使用 TaskFactory.FromAsync 的方式并没有达到我的预期。
是否有适当的方法来限制同时发生的 WebRequest?
【问题讨论】:
标签: c# multithreading httpwebrequest