public List<Order.RootObject> DoStuff()
{
List<Order.RootObject> cOrders = new List<Order.RootObject>();
var client = new RestClient(url);
var request = new RestRequest("orders", Method.GET);
request.AddParameter("pgsize", "2000");
request.AddParameter("pgnum", "1");
var response = client.Execute<Order.RootObject>(request);
int iLoop = response.Data.TotalResults/2000 + 1;
Parallel.For(1, iLoop,
index => {
request.Parameters[“pgnum”].Value = index;
response = response = client.Execute<Order.RootObject>(request);
cOrders.Add(response.Data);
});
return cOrders;
}
cOrders는 API에서 되돌아 오는 모든 응답으로 끝나지 않습니다. 간단한 For 루프로 변경하면 모든 것이 좋지만 일부 호출의 경우 필요한 모든 데이터를 얻기 위해 API에 많은 루프가 있기 때문에 오래 걸립니다.ThreadSafe Parallel.For
'RestClient'와'List'에 아래에 언급 된 스레드 안전성 문제 외에도 서버가 지원할 동시 연결 수를 확인하고'Parallel.For' 호출에서'MaxDegreeOfParallelism'을 제한해야합니다. –