目前调用线程池上的方法并且如果有任何异常仍然会得到异常我正在使用带有单个事件处理程序的事件并使用BeginInvoke()
.
A 类从 B 类订阅事件。B 类对 A 类一无所知。
我不禁有一种感觉,这是一种愚蠢的hacky方式,那么你如何正确地做到这一点?
目前调用线程池上的方法并且如果有任何异常仍然会得到异常我正在使用带有单个事件处理程序的事件并使用BeginInvoke()
.
A 类从 B 类订阅事件。B 类对 A 类一无所知。
我不禁有一种感觉,这是一种愚蠢的hacky方式,那么你如何正确地做到这一点?
切换到使用任务并行库而不是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