NetMQ 协议,支持摄像头增、删、改
This commit is contained in:
@@ -147,10 +147,37 @@ namespace SHH.CameraDashboard
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
_isRunning = false;
|
||||
_poller?.Stop();
|
||||
_poller?.Dispose();
|
||||
_routerSocket?.Dispose();
|
||||
// 增加锁,防止重复释放
|
||||
lock (_disposeLock)
|
||||
{
|
||||
if (!_isRunning) return;
|
||||
_isRunning = false;
|
||||
|
||||
Console.WriteLine("[Bus] 正在释放 NetMQ 资源...");
|
||||
|
||||
// 1. 停止 Poller
|
||||
if (_poller != null)
|
||||
{
|
||||
_poller.Stop();
|
||||
_poller.Dispose();
|
||||
_poller = null;
|
||||
}
|
||||
|
||||
// 2. 释放 Socket
|
||||
if (_routerSocket != null)
|
||||
{
|
||||
_routerSocket.Close();
|
||||
_routerSocket.Dispose();
|
||||
_routerSocket = null;
|
||||
}
|
||||
|
||||
// 3. ★★★ 解决残留的关键:强制清理静态环境 ★★★
|
||||
// 参数为 true 会等待后台 I/O 线程完成(可能卡住),
|
||||
// 参数为 false 则强制放弃未完成的 I/O 直接关闭。
|
||||
NetMQConfig.Cleanup(false);
|
||||
|
||||
Console.WriteLine("[Bus] NetMQ 资源已安全释放。");
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose() => Stop();
|
||||
|
||||
Reference in New Issue
Block a user