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 回答