zoukankan      html  css  js  c++  java
  • C#处理C++库回调报错_非托管代码传递委托被垃圾回收

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

            [DllImport("...")]
            public static extern bool HB_SDVR_SetParseCallBack(int lRealHandle, SrcDataParseCBHandler SrcDataParseCBFun, int nRseserved);

            [UnmanagedFunctionPointer(CallingConvention.StdCall)]
            public delegate void SrcDataParseCBHandler(int nChl, System.IntPtr SrcDataBuf, int nSize, int nFrameType, VIDEO_TIME ets, int user);

            SrcDataParseCBHandler srcDataParseCBHandler ;
            public int Start()
            {
                ...

                    srcDataParseCBHandler = OnSrcDataParseCBHandler;
                    bool resb = HBSDK.HB_SDVR_SetParseCallBack(CookieID, srcDataParseCBHandler, CookieID);
        ...    

            }
     

      public void OnSrcDataParseCBHandler(int nChl, System.IntPtr SrcDataBuf, int nSize, int nFrameType,                                VIDEO_TIME ets, int user)
            {...}

  • 相关阅读:
    160-三个用户同时登录,是怎么实现多线程的?
    159-如何解决缓存穿透?
    158-为什么会引发缓存穿透?
    存储emoji表情,修改字符集为utf8mb4
    java相差小时数
    pom.xml解释
    前端 跨域
    java 获取的是本地的IP地址
    是否超时
    发送验证码
  • 原文地址:https://www.cnblogs.com/joe62/p/1626900.html
Copyright © 2011-2022 走看看