ฉันต้องการดำเนินการ 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 ไม่ได้ทำสิ่งที่ฉันคาดหวังไว้
มีวิธีที่เหมาะสมในการเค้น WebRequests พร้อมกันหรือไม่