我使用的是C#,我创建了一个应用程序A和一个动态链接库B。我希望能够做到以下几点:
public void MyAppMethod(string inComing){ Debug.WriteLine("callback returned:“+ inComing);}
B.SetCallback(MyAppMethod);
void SomeMethod(){ //做一些事情MyAppMethod("hello");}
我该如何设置它?
发布于 2018-07-31 04:59:38
使用事件:
应用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");
}
这些代码将按原样工作。但是,在使用此代码之前,您必须考虑许多重要的事情,您将发现on the web
发布于 2018-07-31 20:43:05
这是我最终使用的代码。
应用A:
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;
DLL 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");
https://stackoverflow.com/questions/51601069
复制相似问题