目前在线程池上调用一个方法,如果我正在使用带有单个事件处理程序的事件并使用BeginInvoke()
调用事件处理程序,则仍然会获得异常。
A类订阅B组的事件.B类对A类一无所知。
我情不自禁地觉得这是一种愚蠢的黑客行为方式,所以你怎么做呢?
答案 0 :(得分:2)
切换为使用Task Parallel Library代替ThreadPool
,它有很好的exception handling支持。
如何将A类方法的“引用”注入到B类中,而不给B类引用A类
您需要更新类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