来自DLL的C#回调

9 c# dll delegates callback

我正在C#.NET中编写应用程序A和DLL B. 我该怎么做:

  1. A中的呼叫功能
  2. 希望B使用委托/回调来更新A的UI中的状态

不是关于BackgroundWorker ...那部分在A中工作正常.我看不到的是如何让B知道在A中调用什么函数.

Jer*_*ine 13

要扩展Rob Prouse的答案,您需要声明一个委托,然后将匹配方法传递给它.

在B:

public delegate void CallbackDelegate(string status);

public void DoWork(string param, CallbackDelegate callback)
{
    callback("status");
}
Run Code Online (Sandbox Code Playgroud)

在一个:

public void MyCallback(string status)
{
    // Update your UI.
}
Run Code Online (Sandbox Code Playgroud)

当你调用方法时:

B.DoWork("my params", MyCallback);
Run Code Online (Sandbox Code Playgroud)


Rob*_*use 6

你有两个选择.最常见的是在B中有一个事件,并在A中使用您的UI订阅该事件.然后B发射那个事件.

第二个选项是将A中的委托作为参数传递给B中的方法调用.然后B可以调用该委托.