将VB函数回调作为参数传递给.NET

5DN1L

Visual Basic程序的一部分将移至.NET dll。

参数调用可以成功传递,并且一切运行正常。

在长时间运行的异步任务后,如何通过VB6的.NET回调函数进行调用?

在.NET中

Public Delegate Function VBCallBackFunc() As Integer

Public Function DoSomething(a As String, b As String, c As String, _
parent As IntPtr, Optional ByVal CallbackAddr As VBCallBackFunc = Nothing) As Boolean Implements _DotNetLib.DoSomething

VB6

result = DotNetLib.DoSomething(strA, strB, strC, Me.hwnd, AddressOf DotNetCallback)

Public Function DotNetCallback() As Long
    MsgBox ("Callback")
End Function

在VB的对象浏览器中:

Function DoSomething(strA As String, strB As String, strC As String,
 parent As Long, [CallbackAddr As VBCallBackFunc]) As Boolean

Member of DotNetLib

但它说“无效使用AddressOf运算符”

卡文

与使用事件相关的注释是一个不错的选择,但是我倾向于更多地使用接口,因此这里提供了一种解决方案。

(徒手的代码,您需要进行语法检查,并且可以清除名称,它们仅用于说明目的)

在.NET中:

为您的回调创建一个COM公开接口:

Public Interface IVBCallBack
   Public Function VBCallBackFunc() As Integer
End Interface

更改您的DoSomething就像这样:

Public Function DoSomething(a As String, b As String, c As String, parent As IntPtr, ByVal CallbackAddr As IVBCallBack) As Boolean

在VB6中:

result = DotNetLib.DoSomething(strA, strB, strC, Me.hwnd, Me)

(您将需要使用您的类,控件或表单来Implements IVBCallBack

Public Function IVBCallBack_VBCallBackFunc() As Long
    MsgBox ("Callback")
End Function

由于.NET持有对VB6对象的引用,因此请确保在.NET端具有清除和释放所有引用的方法。

另一件事要注意。除主UI线程外,请勿在其他任何线程上返回VB6!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VB.NET 将函数传递给 Action 参数

来自分类Dev

从VB.Net将文本值作为参数传递给Crystal Report公式字段时出错

来自分类Dev

将asp.net控件作为参数传递给javascript函数

来自分类Dev

传递给 VB.NET 中的函数时声明参数

来自分类Dev

如何将表单作为函数vb.net的参数传递

来自分类Dev

VB.NET如何将参数传递给类?

来自分类Dev

.NET C# DropDownList 将参数传递给函数

来自分类Dev

无效的长度参数传递给 LEFT 或 SUBSTRING 函数 VB.net

来自分类Dev

将PowerShell数组传递给.NET函数

来自分类Dev

将PowerShell数组传递给.NET函数

来自分类Dev

将字符串数组作为参数传递给asp.net mvc webapi方法

来自分类Dev

将数组作为命令行参数传递给Asp.Net Core

来自分类Dev

将Ext.NET隐藏字段的值作为参数传递给Action方法

来自分类Dev

.Net反射使用通用参数调用函数-如何将类型传递给函数

来自分类Dev

将webmatrix中的vb.net变量传递给jquery函数

来自分类Dev

VB.NET,将数组作为参数传递的两种方式相同吗?

来自分类Dev

如何将子过程作为参数传递VB.NET

来自分类Dev

VB.NET,将数组作为参数传递的两种方式相同吗?

来自分类Dev

VB.NET - 清除传递给 Oracle 存储过程的参数

来自分类Dev

.NET System.Timers.Timer如何将参数传递给委托函数?

来自分类Dev

通过参数将asp.net控件ID传递给jquery函数

来自分类Dev

在VB.NET中将对象作为参数传递

来自分类Dev

将参数传递给回调函数

来自分类Dev

将参数传递给回调函数

来自分类Dev

将参数传递给回调函数

来自分类Dev

将函数作为回调参数传递

来自分类Dev

将函数作为参数传递给函数

来自分类Dev

将函数作为参数传递给函数

来自分类Dev

类类型作为vb.net中的函数参数

Related 相关文章

热门标签

归档