【问题标题】:Calling delegates later aka. delegate queue稍后再调用代表。委托队列
【发布时间】:2012-04-20 21:43:08
【问题描述】:

所以我对 c# 很陌生,我已经解决了这个问题: 我有一些调用不同委托的方法(可能具有不同的参数类型)。但是,不应立即调用这些代表。如果主线程正在运行一个委托,它们应该在之后运行,有点像将委托排队并稍后运行它。
现在我可能可以使用 DynamicInvoke 但我不知道它是否会使队列减慢太多,除了我知道委托类型是什么以及它应该寻找什么样的参数,所以它并不真正依赖于运行时。 如果可以的话请帮助我,我真的需要一个答案。

谢谢大家(谁回复)

【问题讨论】:

标签: c# delegates dynamic-invoke multicastdelegate


【解决方案1】:

其中一种方法是使用Tasks(从.NET 4.0开始)

可以去看看

Asynchronous methods, C# iterators, and Tasks

在您的情况下,如何创建调度任务。

希望这会有所帮助。

【讨论】:

  • 对不起,我只能用.net 3.5
  • 此时可能更合适,实际上可能是评论中提供的一个选项,所以Reactive Extensions
  • @user1316459:实际上还有另一种解决方案,可能更适合调度,它是Quartz.NET。看看它,可能对你更有用。
【解决方案2】:

如果您不是直接添加您的委托,而是将它们包装到新的Action 委托中,它会简单地调用它们并传递它们的所有参数,这会起作用吗?例如:

List<Action> pending = new List<Action>();
pending.Add(() => MethodThatTakesNoParameters());
pending.Add(() => MethodThatTakesOneParameter(param));
pending.Add(() => MethodThatTakesThreeParameters(param1, param2, param3));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    相关资源
    最近更新 更多