DownloadStringAsync blocks thread for 14 seconds on first call

萝らか妹 提交于 2019-12-10 13:49:06

问题


This only happens on one of my machines. I think it's an environment configuration problem. All machines run ESET Smart Security software firewall. Any ideas?

using System;
using System.Net;
using System.Diagnostics;
using System.Threading;

namespace Test
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            bool exit = false;
            WebClient wc = new WebClient();
            DateTime before = DateTime.Now;
            wc.DownloadStringAsync(new Uri("http://74.125.95.147"), "First"); // IP Address of google, so DNS requests don't add to time.
            wc.DownloadStringCompleted += delegate(object sender, DownloadStringCompletedEventArgs e)
            {
                Debug.WriteLine(e.UserState + " Call: " + (DateTime.Now - before));

                if ((string)e.UserState == "First")
                {
                    before = DateTime.Now;
                    wc.DownloadStringAsync(new Uri("http://74.125.95.147"), "Second");
                }
                else
                    exit = true;
            };

            /*
             * 
             * Output:
             * 
             * First Call: 00:00:13.7647873
             * Second Call: 00:00:00.0740042
             * 
             */

            while (!exit)
                Thread.Sleep(1000);
        }
    }
}

回答1:


Your machine is configured to perform Automatic Proxy Detection.

You can disable it here:

Alternatively, you can manually override the proxy used by the WebClient. Set the WebClient.Proxy Property to null to specify that no proxy should be used. Any explicit proxy setting disables Automatic Proxy Detection.

client.Proxy = null;

However, you should offer the user the option to configure a proxy in your application in this case, because some users are required to use a proxy when accessing the Web.



来源:https://stackoverflow.com/questions/3128563/downloadstringasync-blocks-thread-for-14-seconds-on-first-call

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!