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 を使用している場合は、Task Parallel Library (TPL) を調べる必要があります。

デリゲートを使用した非同期プログラミングについては、ここで説明します (追加のもあり ます)。MSDN の慣行や提案に従うと、さらに悪い結果になる可能性があります。

于 2011-10-25T12:13:01.940 に答える