Подтвердить что ты не робот

Как ограничить время DownloadString (url), разрешенное на 500 миллисекунд?

Я пишу программу, которая при изменении textBox1:

URL = "http://example.com/something/";
URL += System.Web.HttpUtility.UrlEncode(textBox1.Text);
s = new System.Net.WebClient().DownloadString(URL);

Я хочу ограничить время DownloadString (URL), разрешенное на 500 миллисекунд. Если больше, отмените его.

4b9b3361

Ответ 1

Нет такого свойства, но вы можете легко расширить WebClient:

public class TimedWebClient: WebClient
{
    // Timeout in milliseconds, default = 600,000 msec
    public int Timeout { get; set; }

    public TimedWebClient()
    {
        this.Timeout = 600000; 
    }

    protected override WebRequest GetWebRequest(Uri address)
    {
        var objWebRequest= base.GetWebRequest(address);
        objWebRequest.Timeout = this.Timeout;
        return objWebRequest;
    }
}

// use
string s = new TimedWebClient {Timeout = 500}.DownloadString(URL);

Ответ 2

Один из способов сделать это - использовать метод DownloadStringAsync в классе WebClient, а затем асинхронно вызвать метод CancelAsync через 500 миллисекунд. См. Раздел примечаний здесь для некоторых указателей о том, как это сделать.

В качестве альтернативы вместо этого вы можете использовать класс WebRequest, который имеет свойство Timeout. См. Пример кода здесь.