2017-11-17 26 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#のasyncはしばしば並列性を導入することとは関係ありません。 –

+1

私は彼が並行処理を高速化することを意味すると思います。 – Yuri

+1

@Yuri:はい、確信していますが、これらの違いを認識する価値があると言います。 –

答えて

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); 
}); 

この手順では、手順が特定の順序で実行されないことにご注意ください。

関連する問題