为了账号安全,请及时绑定邮箱和手机立即绑定

如何将回调方法传递给 C# 中的另一个类

如何将回调方法传递给 C# 中的另一个类

C#
慕斯王 2021-11-07 19:07:34
我正在使用 C#,并且我创建了一个 App A 和一个 DLL B。我希望能够执行以下操作:在 App A 中,创建我的回调方法:public void MyAppMethod(string inComing){    Debug.WriteLine("callback returned: " + inComing);}在 App A 中,在 B 中设置 CallBack 方法,例如 B.SetCallback(MyAppMethod);在 DLL B 中,使用回调返回一个字符串:private void SomeMethod(){    //do some stuff    MyAppMethod("hello");}我该如何设置?
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

使用事件:


应用程序A:


public void MyAppMethod(string inComing){

    Debug.WriteLine("callback returned: " + inComing);

}


B.MyAppMethod += MyAppMethod;

应用程序B:


public event Action<string> MyAppMethod;

private void SomeMethod(){

    //do some stuff

    if(MyAppMethod!=null) MyAppMethod("hello");

}

使用委托:


应用程序A:


public void MyAppMethod(string inComing){

    Debug.WriteLine("callback returned: " + inComing);

}


B.MyAppMethod = MyAppMethod;

应用程序B:


public Action<string> MyAppMethod;

private void SomeMethod(){

    //do some stuff

    if(MyAppMethod!=null) MyAppMethod("hello");

}

这些代码将按原样工作。但是,在使用此代码之前,您必须考虑许多重要事项,您可以在网上找到这些内容


查看完整回答
反对 回复 2021-11-07
?
慕标5832272

TA贡献1966条经验 获得超4个赞

这是我最终使用的代码。


应用程序一:


public void MyCallBack(string status)

{

   // Add callback text to the status window

   StatTxt.AppendText(status);

}


// Set the callback method in DLL B

B.HollaBack = MyCallBack;

动态链接库 B:


public delegate void CallBackDelegate(string status);  

public CallBackDelegate HollaBack

{

   get; set;

}


private void DoCallBack(string inMsg)

{

   // Make sure the callback method was set

   if (HollaBack != null)

   {

      // send text to the callback method

      HollaBack(inMsg);

   }

}


// Invoke the callback anywhere within DLL B

DoCallBack("show this in the status window");


查看完整回答
反对 回复 2021-11-07
  • 2 回答
  • 0 关注
  • 239 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信