web-dev-qa-db-ja.com

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ミリ秒に制限したい。それ以上の場合はキャンセルしてください。

16
Tuyen Pham

そのようなプロパティはありませんが、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);
31
bytebuster

これを行う1つの方法は、WebClientクラスでDownloadStringAsyncメソッドを使用し、500ミリ秒後にCancelAsyncメソッドを非同期的に呼び出すことです。その方法に関するいくつかの指針については、備考セクション ここ を参照してください。

または、代わりに、Timeoutプロパティを持つWebRequestクラスを使用することもできます。コード例を参照してください ここ

7
Stephen Hewlett