2012-10-14 5 views

Antwort

25

Es gibt keine solche Eigenschaft, aber Sie die WebClient leicht erweitern können:

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); 
+0

ein Problem mit einer beliebten Währungsstabilität Website haben, erlaubt Website conneciton aber ihre API keine Antwort haben - Wenn dieser kleinen Nugget ist der ideale Patch, sehr verpflichtet. –

+1

Jetzt schaue ich wieder und lernte genug, um Ihre Antwort zu wissen, um meine Frage zu beantworten. Änderung akzeptiert zu Ihrer Antwort. – Sakura

7

Eine Möglichkeit wäre, die DownloadStringAsync-Methode für die WebClient-Klasse zu verwenden und dann die CancelAsync-Methode nach 500 Millisekunden asynchron aufzurufen. Sehen Sie die Bemerkungen Abschnitt here für einige Hinweise, wie dies zu tun ist.

Alternativ können Sie stattdessen die WebRequest-Klasse verwenden, die über eine Timeout-Eigenschaft verfügt. Siehe Codebeispiel here.