本帖最后由 Qiaorui 于 2012-04-28 17:08:41 编辑

解决方案 »

  1.   

    补充:
    目的是从 Queue 队例取出 WorkItem 后,直接执行 Working() 就会直接进行处理,Working()不再带参数。
      

  2.   

    public interface IWorkItem
    {
        void Working();
        int arg;
    }
      

  3.   

    何苦把method放到workitem里面 
    public interface IMethod
    {
       void Method();
    }
    public WorkItem
    {
       private IMethod _currentMethod;
       public void Work()
       {
         _currentMethod.Method();
       }
    }
      

  4.   


    var actions = new List<Action>();
    void AddAction(Action action)
    {
    this.actions.Add(action);
    }
    ...void Perform()
    {
    foreach(var action in actions)
    {
    action();
    }
    }
      

  5.   

    Action委托?还真没接触过,慢慢再研究。
      

  6.   

    多播委托确实没有用过。似乎通过 += 封装的方法好象都要执行,总之都要经过这三个 Method 处理,合在一起执行也一样。不过通过IO写盘就不太好了,不如缓冲到一定大小再写会更好。
    所以还是坚持原来的方案,经 Method0 处理后,重新加入队例;再经 Method1 ,重新加入队例;最后 Method2 处理,并从队例中剔除,还请教这种情况下如何处理?
      

  7.   

    public delegate void deleMethod();
    并将Method0-2定义在调度器类中,在将 WorkItem 添加到Queue<WorkItem>时,通过 new deleMethod(调度器类.Method0-2)指派。方便又实用。