请教关于调度器的设计问题,如何指派要执行的方法?
关于调度器的设计,偶现在能想到的就是把不同需要的工作定义为相应的方法,然后根据 Working 的参数 type 来决定执行那一个方法,
- C# code
public interface IWorkItem{ void Working(int type);}public class WorkItem : IWorkItem{ public void Working(type) { switch(type) { case 0: Method0(); break; case 1: Method1(); break; case 2: Method2(); break; } } public void Method0() { } public void Method1() { } public void Method2() { }}
现在的设想是,能不能在将 WorkItem 这个 IWorkItem 添加(或经过处理再重新添加)到 Queue 队例的同时,指派相当的方法,而不是根据 Working 的参数 type 来决定,如能,如何指派?
[解决办法]
public interface IWorkItem
{
void Working();
int arg;
}
[解决办法]
何苦把method放到workitem里面
public interface IMethod
{
void Method();
}
public WorkItem
{
private IMethod _currentMethod;
public void Work()
{
_currentMethod.Method();
}
}
[解决办法]
- C# code
var actions = new List<Action>();void AddAction(Action action){this.actions.Add(action);}...void Perform(){foreach(var action in actions){action();}}
[解决办法]
public delegate void deleMethod();
并将Method0-2定义在调度器类中,在将 WorkItem 添加到Queue<WorkItem>时,通过 new deleMethod(调度器类.Method0-2)指派。
方便又实用。