比单个事件处理程序更好的事件来引发异步方法
本文关键字:异步方法 事件 单个 事件处理 程序 更好 | 更新日期: 2023-09-27 17:51:09
目前调用线程池上的方法,如果有任何异常,我正在使用单个事件处理程序的事件,并使用BeginInvoke()
调用事件处理程序。
类A订阅了类B的事件。类B对类A一无所知。
我不禁有这样的感觉,这是愚蠢的黑客的方式来做这件事,那么你怎么做正确?
切换到使用任务并行库而不是ThreadPool
,它有很好的异常处理支持。
如何将类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