我有一些目前看起来像这样的代码:
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。
感谢。
答案 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());