admin 发表于 2024-11-6 20:50:17

【FBroSharp】C#版本4.6.12.1后事件类传递参考源码

事件类传递,新版后类接口参数只在事件作用域内有效,如要保存以便后续操作,参考如下代码wss直接使用new引用websocket;
注意:这里如果不是用这种方式,如果才用wss=websocket的方式,实际是弱拷贝,当websocket离开作用域的时候(也就是下面类方法执行完毕的时候),wss和websocket都会被释放IsValid将变为假而无效;

public override void VIP_OnWebSocketClientConnect(IFBroSharpBrowser browser, IFBroSharpFrame frame,
            IFBroSharpDOMWssClient websocket, ref string returl, ref string protocols)
{
    wss = new FBroSharpDOMWssClient(websocket);
}


其实非必要不建议如此操作,采用如此操作,在不用的时候最好将wss设置为null,以便GC管理器自动回收,如下:
public override void VIP_OnWebSocketClientClose(IFBroSharpBrowser browser, IFBroSharpFrame frame, IFBroSharpDOMWssClient websocket)
{
    wss = null;
}

完整示例参考在线gitee库:https://gitee.com/FloatToPoint/fbro-sharp-test.git

ps:采用该模式的主要原因是降低内存占用和加快C++传递的类变量释放,避免无谓的占用,无需等待GC回收即可快速回收;




页: [1]
查看完整版本: 【FBroSharp】C#版本4.6.12.1后事件类传递参考源码