| | |
| | | public partial class TcpSocketServer |
| | | { |
| | | /// <summary> |
| | | /// 释放服务器使用的所有资源并停止监听传入连接。 |
| | | /// 释放服务器资源 |
| | | /// </summary> |
| | | /// <remarks>当不再需要服务器时调用此方法,以确保所有相关资源(如网络监听器和同步原语)被正确释放。 |
| | | /// 调用 <see cref="Dispose"/> 后,服务器无法重新启动或再次使用。</remarks> |
| | | /// <remarks> |
| | | /// 停止监听、取消所有客户端任务、关闭监听器、释放信号量。 |
| | | /// 调用此方法后,服务器无法再次使用。 |
| | | /// </remarks> |
| | | 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"); |
| | | } |
| | | } |