日期:2014-05-18  浏览次数:20711 次

请教关于调度器的设计问题,如何指派要执行的方法?
关于调度器的设计,偶现在能想到的就是把不同需要的工作定义为相应的方法,然后根据 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)指派。

方便又实用。