2017-11-17 9 views
0

약 30 개의 메서드 호출 (채우기 데이터 집합)이 있습니다. 이 호출을 병렬 (비동기)로 만들고 싶습니다. 몇 가지 코드 아이디어를 제공해주세요. 다음은 일부 호출입니다.메서드 호출을 비동기로 수행하는 방법

ds = (DS)dbManager.ExecuteDataSet(CommandType.StoredProcedure, Proc1, ds, tableNames); 
ds = (DS)dbManager.ExecuteDataSet(CommandType.StoredProcedure, Proc2, ds, tableNames); 
ds = (DS)dbManager.ExecuteDataSet(CommandType.StoredProcedure, Proc3, ds, tableNames); 
ds = (DS)dbManager.ExecuteDataSet(CommandType.StoredProcedure, Proc4, ds, tableNames); 
ds = (DS)dbManager.ExecuteDataSet(CommandType.StoredProcedure, Proc5, ds, tableNames); 
ds = (DS)dbManager.ExecuteDataSet(CommandType.StoredProcedure, Proc6, ds, tableNames); 
ds = (DS)dbManager.ExecuteDataSet(CommandType.StoredProcedure, Proc7, ds, tableNames); 
ds = (DS)dbManager.ExecuteDataSet(CommandType.StoredProcedure, Proc8, ds, tableNames); 
+4

"이 호출을 병렬 (비동기식)으로 만들고 싶습니다."- "비동기식"과 "병렬 형"은 서로 관련이 있지만 다른 개념입니다. 종종 C#에서 비동기는 병렬 처리를 도입하는 것과 아무런 관련이 없습니다. –

+1

나는 그가 병렬 처리를 의미한다고 생각한다. – Yuri

+1

@ 유리 : 예, 확실합니다.하지만 저는 이것들의 차이를 알 가치가 있다고 말하고 있습니다. –

답변

1

제 생각에는 Proc1, proc2 ..는 프로 시저 이름입니다. 목록에로드하고 다음을 시도하십시오.

string[] procNames = {"Proc1","Proc2","Proc3","Proc4","Proc5"}; 
List<string> list =new List<string>(); 
foreach (var procName in procNames) 
{ 
    list.Add(procName); 
} 
Parallel.ForEach(list, current => 
{ 
    ds = (DS)dbManager.ExecuteDataSet(CommandType.StoredProcedure, current, ds, tableNames); 
}); 

특정 순서로 프로 시저를 실행하지 않습니다.