1

現時点では、スレッドプールのメソッドを呼び出しても、例外が発生した場合は例外を取得します。単一のイベントハンドラーでイベントを使用し、。でイベントハンドラーを呼び出しますBeginInvoke()

クラスAはクラスBからのイベントをサブスクライブします。クラスBはクラスAについて何も知りません。

私はこれがこれを行うための愚かなハッキーな方法であると感じずにはいられません、それであなたはそれをどのように適切に行うのですか?

4

1 に答える 1

2

の代わりにTask Parallel Libraryを使用するように切り替えてください。ThreadPool優れた例外処理サポートがあります。

クラスBにクラスAへの参照を与えずに、クラスAのメソッドへの「参照」をクラスBに注入するにはどうすればよいですか

B関数をコンストラクターパラメーターまたはプロパティとして取り込むには、クラスを更新する必要があります。

public class A
{
    public void MethodToCall(string args)
    {
        Console.WriteLine("I am class A - " + args);
    }
}

public class B
{
    public B(Action<string> action)
    {
        Method = action;
    }

    public Action<string> MethodToCall { get; private set; }
}
...
var a = new A();
var b = new B(a.MethodToCall);
a.MethodToCall("A"); // I am class A - A
b.MethodToCall("B"); // I am class A - B
于 2013-01-10T11:18:09.010 に答える