using System; using System.IO; namespace WIDESEAWCS_Tasks.SocketServer { public partial class TcpSocketServer { /// /// 释放服务器资源 /// /// /// 停止监听、取消所有客户端任务、关闭监听器、释放信号量。 /// 调用此方法后,服务器无法再次使用。 /// public void Dispose() { // 取消所有操作 _cts?.Cancel(); // 停止监听器 _listener?.Stop(); // 释放取消令牌源 _cts?.Dispose(); // 释放所有客户端信号量 foreach (var sem in _clientLocks.Values) { try { sem.Dispose(); } catch { } } _clientLocks.Clear(); // 记录停止日志 Log($"[{DateTime.Now}] TcpSocketServer stopped"); } } }