現時点では、スレッドプールのメソッドを呼び出しても、例外が発生した場合は例外を取得します。単一のイベントハンドラーでイベントを使用し、。でイベントハンドラーを呼び出しますBeginInvoke()
。
クラスAはクラスBからのイベントをサブスクライブします。クラスBはクラスAについて何も知りません。
私はこれがこれを行うための愚かなハッキーな方法であると感じずにはいられません、それであなたはそれをどのように適切に行うのですか?
現時点では、スレッドプールのメソッドを呼び出しても、例外が発生した場合は例外を取得します。単一のイベントハンドラーでイベントを使用し、。でイベントハンドラーを呼び出しますBeginInvoke()
。
クラスAはクラスBからのイベントをサブスクライブします。クラスBはクラスAについて何も知りません。
私はこれがこれを行うための愚かなハッキーな方法であると感じずにはいられません、それであなたはそれをどのように適切に行うのですか?
の代わりに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