有条件地并行执行功能

时间:2013-08-18 23:21:12

标签: c#

我有一些目前看起来像这样的代码:

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。

感谢。

1 个答案:

答案 0 :(得分: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());