ソースを参照

捕获OperationAborted异常

xljiulang 4 年 前
コミット
0876c6b35d
1 ファイル変更11 行追加4 行削除
  1. 11 4
      FastGithub.Dns/DnsServerHostedService.cs

+ 11 - 4
FastGithub.Dns/DnsServerHostedService.cs

@@ -127,10 +127,17 @@ namespace FastGithub.Dns
             var remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
             var remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
             while (stoppingToken.IsCancellationRequested == false)
             while (stoppingToken.IsCancellationRequested == false)
             {
             {
-                var result = await this.socket.ReceiveFromAsync(this.buffer, SocketFlags.None, remoteEndPoint);
-                var datas = new byte[result.ReceivedBytes];
-                this.buffer.AsSpan(0, datas.Length).CopyTo(datas);
-                this.HandleRequestAsync(datas, result.RemoteEndPoint, stoppingToken);
+                try
+                {
+                    var result = await this.socket.ReceiveFromAsync(this.buffer, SocketFlags.None, remoteEndPoint);
+                    var datas = new byte[result.ReceivedBytes];
+                    this.buffer.AsSpan(0, datas.Length).CopyTo(datas);
+                    this.HandleRequestAsync(datas, result.RemoteEndPoint, stoppingToken);
+                }
+                catch (SocketException ex) when (ex.SocketErrorCode == SocketError.OperationAborted)
+                {
+                    break;
+                }
             }
             }
         }
         }