我使用的是Web客戶端下載某網站的某個字符串(只包含純文本,沒有別的),所以我用了DownloadString方法:C#WebClient的作用減緩第一次
WebClient wc = new WebClient();
string str = wc.DownloadString("http://blah");
它工作正常,但問題是它第一次下載字符串需要很長時間,比如5秒。之後,它工作得很快。爲什麼會發生這種情況,如何解決這個問題?
我使用的是Web客戶端下載某網站的某個字符串(只包含純文本,沒有別的),所以我用了DownloadString方法:C#WebClient的作用減緩第一次
WebClient wc = new WebClient();
string str = wc.DownloadString("http://blah");
它工作正常,但問題是它第一次下載字符串需要很長時間,比如5秒。之後,它工作得很快。爲什麼會發生這種情況,如何解決這個問題?
將WebClient
對象的Proxy
屬性設置爲空應該消除您看到的延遲。或者,如果您已將系統配置爲使用代理,則可以使用WebRequest.GetSystemWebProxy
進行檢索。第二種方法應該消除這兩種情況下的延遲。
那麼,它第一次需要做DNS查找並連接到主機 - 之後,在同一個進程中,它可能會重新使用相同的連接。對於第一個要求,任何地方,很可能也試圖檢測代理設置等
如果你想看到什麼是真正發生在網絡層,使之慢,我建議你搶Wireshark並用此來監控流量。
這是您的Web服務或一些別人的?每次你開始你的客戶時都會發生這種情況嗎? (即使在下載字符串時直接重啓?) – Peter
相關:http://stackoverflow.com/questions/4415443 –
還要注意,即使使用方法的「異步」版本,這也會導致應用程序凍結。這樣的狗屎是如何得到釋放的? –