我有一个运行其他功能的功能(内部功能)。所以每个内部函数都是主要功能的一步。 每次内部函数结束运行时我都要更新进度。每个内部函数都接受当前进度作为参数,我手动完成。
问题是我有大约10个主要功能,而每个主要功能的内部功能数量都在变化。
有没有办法在这个流程中引入某种动态值?
示例:
public void Run() {
DoWork1(33);
DoWork2(66);
Dowork3(100);
}
public void Run() {
DoWork1(25);
DoWork4(50);
Dowork5(75);
Dowork2(100);
}
答案 0 :(得分:6)
public void Run(params Action<int>[] actions)
{
for (int i = 0; i < actions.Length; i++)
{
Action<int> action = actions[i];
int progress = ((i + 1) * 100) / actions.Length;
action(progress);
}
}
然后用:
调用它Run(DoWork1, DoWork2, DoWork3);
Run(DoWork1, DoWork4, DoWork5, DoWork2);