我有用C#编写的.dll
,我在Visual Basic中使用它来创建Com对象。我从我的Visual Basic代码中调用C#函数。我对这项技术很陌生,遇到这样的问题。在C#代码中,我有一个方法,它接收一个回调函数作为参数,从服务器获取数据然后调用该回调函数。现在我需要从我的Visual Basic代码中调用该函数并传递回调函数。 我认为它应该是这个样子将回调函数从Visual Basic传递到C#
// C# dll
public bool GetDataFromServer(int someData1, Action<MyCustomType> callback, int someData2)
{
// request to server, get data, create an object of MyCustomType
// call callback and pass MyCustomType object to it as a parameter
}
// Visual Basic part
Public Sub DisplayData(ByRef resp As My_Dll.MyCustomType)
' do something with resp
End Sub
// call Dll method
My_Dll.GetDataFromServer(1, DisplayData, 2) ' I get a compile error
但我无法得到它的工作,但事件不会编译。我收到一个编译错误,说“参数不可选”。我也试着通过回调函数AddressOf
,但我再次收到错误 - “AddressOf运算符的使用无效”。 现在我的问题是 - 我做错了什么?将回调函数从Visual Basic传递给C#并将其调用的正确方法是什么?
谢谢你的时间!
如何使用'async'和'await'来代替回调? –
其实我需要回拨,因为我要订阅。所以我的回调应该一次又一次地根据服务器响应来调用。 – nabroyan
VBA没有代表。您是否考虑传递一个C#可以存储并在完成时调用的对象? – DanL