2

在 C# 中,我有一个执行可能需要很长时间的操作的类层次结构。出于这个原因,我实现了一个解耦/回调机制,所以调用者不会被阻塞,而是通过回调接口通知一个动作的完成。这看起来像这样:

protected delegate void ActionDelegate();
public void doAction()
{
  Task.Factory.StartNew(() => DoActionASync());
}
private void DoActionASync()
{
  DoActionImpl(); 
  Caller->ActionDone(); // Caller is registered separately, and implements an interface (ICallback) that includes this function
}
protected abstract void DoActionImpl(); // Derived classes implement this

这是相当多的重复代码,每种方法都有细微的差异(签名)。我的问题是这是否是解决此问题的正确方法,或者 .NET/C# 是否提供任何可以使这更容易/更简洁的构造?

4

1 回答 1

4

MSDN 上有关于异步编程模式的很好的文档。如果您使用的是 .NET 4,则应查看任务并行库(TPL)。

此处介绍了使用委托的异步编程(还有一个额外的 示例)。遵循 MSDN 的做法和建议,您可能会做得更糟。

于 2011-10-25T12:13:01.940 回答