Intel UPNP lib的一个内存资源泄漏问题

来源:互联网 发布:人工智能音箱 编辑:程序博客网 时间:2024/06/17 09:02


  Intel UPNP lib是一个很好用的东东,也是UPNP官方
推荐的,不过也有一些瑕疵。
  长时间运行可能会导致系统资源(CPU,memory,socket)占用过多。
最主要的原因是其没有及时释放资源。


1. 注意UPnPDevice.cs中函数:

通过此函数,返回解析后的UPnPDevice。
设若发生异常,那么图中红框内UPnPDevice RetVal所占用系统资源
将不能释放。原因如下:
UPnPDevice将会调用SSDP来解析设备,SSDP.cs构造函数中会SetupSessions()
,再看SetupSessions()中使用UdpClient来发起网络请求,但是SSDP.Dispose()

中并没有释放UdpClient资源,解决办法是在SSDP.Dispose()中加上

foreach (UdpClient client in sessions.Values){client.Close();}foreach (UdpClient client in usessions.Values){client.Close();}