我正在C#.NET中编写应用程序A和DLL B. 我该怎么做:
A中的呼叫功能
希望B使用委托/回调来更新A的UI中的状态
这不是关于BackgroundWorker ...那部分在A中工作正常.我看不到的是如何让B知道在A中调用什么函数.
要扩展Rob Prouse的答案,您需要声明一个委托,然后将匹配方法传递给它.
在B:
public delegate void CallbackDelegate(string status); public void DoWork(string param, CallbackDelegate callback) { callback("status"); }
在一个:
public void MyCallback(string status) { // Update your UI. }
当你调用方法时:
B.DoWork("my params", MyCallback);
你有两个选择.最常见的是在B中有一个事件,并在A中使用您的UI订阅该事件.然后B发射那个事件.
第二个选项是将A中的委托作为参数传递给B中的方法调用.然后B可以调用该委托.