Saya ingin menjalankan banyak WebRequests, tetapi menetapkan ambang batas berapa banyak yang dapat dimulai secara bersamaan.
Saya menemukan LimitedConcurrencyTaskScheduler contoh dan mencoba memanfaatkannya seperti itu
scheduler = new LimitedConcurrencyLevelTaskScheduler(1);
taskFactory = new TaskFactory(scheduler);
...
private Task<WebResponse> GetThrottledWebResponse(WebRequest request)
{
return taskFactory.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null);
}
Namun saya perhatikan bahwa bahkan dengan konkurensi maksimal 1, tugas saya sepertinya diselesaikan dalam urutan non-FIFO. Saat saya meletakkan breakpoint di LimitedConcurrencyLevelTaskScheduler, terlihat jelas bahwa breakpoint tersebut tidak digunakan sama sekali. Saya kira cara saya menggunakan TaskFactory.FromAsync tidak sesuai dengan harapan saya.
Apakah ada cara yang tepat untuk membatasi WebRequest secara bersamaan?