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# はこれをより簡単に/より冗長にする構造を提供しますか?