none
请问调用回调函数出现的XXX::Invoke错误 怎么解决? RRS feed

  • 问题

  • 错误信息:
    对“Toolbox!Toolbox.Module1+Scallback::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。

    程序主要用于获取系统窗口状态如窗口创建,激活,销毁等...

    调用API的回调函数的时候 经常出现上面这个错误. 请问应该怎么处理 回调函数 才不会出错?

    以下是主要代码:

    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Integer, ByVal nIndex As Integer, ByVal dwNewLong As Scallback) As Integer
        Public Delegate Function Scallback(ByVal hwnd As Integer, ByVal uMsg As Integer, ByVal wParam As Integer, ByVal Param As Integer) As Integer
    
    lpPrevWndProc = SetWindowLong(FormHwnd, -4, AddressOf callback) '调用回调函数
    
        Public Function callback(ByVal hwnd As Integer, ByVal uMsg As Integer, ByVal wParam As Integer, ByVal Param As Integer) As Integer
                If (wParam = 1) Then 
                   debug .print ("窗口创建消息")
                End If
            Return CallWindowProcA(lpPrevWndProc, hwnd, uMsg, wParam, Param)
        End Function


    2012年8月12日 17:04

答案

全部回复