我知道WebRequest.Timeout
设置了请求的超时,但这似乎只在服务器开始响应之前强制执行。
如果我想在服务器发送一些数据然后停止响应时超时,我该怎么办?
您可以使用读取调用的...Async
版本,并在超时时调用Task.Wait(int)
:
var response = request.GetResponse();
var responseStream = response.GetResponseStream();
using (StreamReader reader = new StreamReader(responseStream )) {
var task = reader.ReadLineAsync();
if (!task.Wait(1000)) {
throw new Exception("Timed out after 1 sec.");
}
string line = task.Result;
// etc....
}