2016-07-14 6 views
0

Я знаю, что WebRequest.Timeout устанавливает тайм-аут для запроса, но похоже, что он применяется только до тех пор, пока сервер не начнет отвечать.Значение тайм-аута WebRequest при неполном медленном ответе

Что делать, если я хочу, чтобы тайм-аут, когда сервер отправляет некоторые данные, перестает отвечать?

ответ

0

Вы можете использовать ...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.... 
}