Я хочу выполнить кучу WebRequests, но установить порог, сколько можно запускать одновременно.
Я наткнулся на этот LimitedConcurrencyTaskScheduler пример и попытался использовать его так
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, не делает того, что я ожидал.
Есть ли правильный способ ограничить одновременные веб-запросы?