1

現在、次のようなコードがいくつかあります。

Parallel.Invoke(
  MyFunction1,
  MyFunction2,
  MyFunction3,
  MyFunction4,
  MyFunction5);

これは本当にうまくいきます。これで、パラメーターとして渡されたバイトのリストも取得できました。これは次のようになります。

TheList = new List<Byte>{1, 3, 5, 6 };

そのリストの内容に基づいて関数を実行したい。このリストの各値が、次のように特定の関数の実行に関連付けられているとしましょう。

1: MyFunction1,
2: MyFunction2,
...
6: MyFunction6

これらの関数の実際の名前は異なります。

関数呼び出しがバイト リストの内容に対して条件付きで並列に実行されるようにコードを変更するにはどうすればよいですか? たとえば、リストに 1 と 5 が含まれている場合、コードは MyFunction1 と MyFunction5 のみを並行して実行します。

ありがとう。

4

1 に答える 1

2

これはどう?

Dictionary<byte, Action> actions = new Dictionary<byte, Action>()
{
    { 1, MyFunction1 },
    { 2, MyFunction2 },
    ...
    { 6, MyFunction6 }
};

List<byte> actionList = new List<byte>() { 1, 3, 5, 6 };

Parallel.Invoke((from action in actionList select actions[action]).ToArray());
于 2013-08-18T23:34:50.543 に答える