1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| using System;
| using System.IO;
|
| namespace WIDESEAWCS_Tasks.SocketServer
| {
| public partial class TcpSocketServer
| {
| /// <summary>
| /// 释放服务器资源
| /// </summary>
| /// <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");
| }
| }
| }
|
|