I have this block of code:
var client = new TcpClient();
HttpRequestInfo.AddTimestamp("Connecting");
await Task.WhenAny(client.ConnectAsync(serverAddress, serverPort),
Task.Delay(TimeSpan.FromMilliseconds(300)));
HttpRequestInfo.AddTimestamp("Connected");
if(client.Connected){ ... }
HttpRequestInfo.AddTimestamp仅使用Stopwatch类记录命名时间戳。
在日志中,我有时会看到:
"Connecting":110ms - "Connected":747ms
"Connecting":35ms - "Connected":3120ms
"Connecting":38ms - "Connected":3053ms
我原以为这种方法可以让我通过超时(300毫秒)来限制连接。然而,我发现这行代码有时(很少)运行时间超过了300毫秒。这种行为的原因是什么?