C#测试多个代理

时间:2014-10-05 10:02:07

标签: c# multithreading proxy

我一直在摸不着头脑。我想知道如何一次测试多个代理,我知道如何一次测试一个,但这需要很多时间。 我使用此代码测试代理

    public bool testProxy( string proxy, int port )
    {
        try
        {
            WebClient web = new WebClient();
            web.Proxy = new WebProxy( proxy, port);
            web.DownloadString("http://www.google.com/ncr");
            return true;
        }
        catch
        {
            return false;
        }
    }

现在我如何使用多线程或我需要使用的任何东西来测试它们? 因为目前我在按下按钮时这样做,这很费时间

        if (proxy_list.Count > 0)
        {
            for (int i = 0; i < proxy_list.Count; i++)
            {
                string Proxy = proxy_list[i];
                string[] vars = Proxy.Split( ':' );
                if (vars.Length == 2)
                {
                    proxy = vars[0];
                    port = int.Parse(vars[1]);
                    if ( !testProxy( proxy, port ) )
                    {
                        proxy_list.RemoveAt(i);
                    }
                }
                else
                {
                    proxy_list.RemoveAt(i);
                }
                textBox3.Text = proxy_list.Count.ToString();
                this.Refresh();
            }
        }

测试代理功能

    public void testProxy(string proxy, int port, int listpos)
    {
        try
        {
            WebClient web = new WebClient();
            web.Proxy = new WebProxy(proxy, port);
            web.DownloadString("http://www.google.com/ncr");
        }
        catch
        {
            proxy_list.RemoveAt(listpos);
        }
    }

1 个答案:

答案 0 :(得分:0)

你可以尝试这个(多线程)

        if (proxy_list.Count > 0)
        {
        for (int i = 0; i < proxy_list.Count; i++)
        {
            string Proxy = proxy_list[i];
            string[] vars = Proxy.Split( ':' );
            if (vars.Length == 2)
            {
                proxy = vars[0];
                port = int.Parse(vars[1]);

            Thread TestProxy = new Thread(testProxy( proxy, port, i));
            TestProxy.Start();
            }
            else
            {
                proxy_list.RemoveAt(i);
            }
            textBox3.Text = proxy_list.Count.ToString();
            this.Refresh();
        }
    }



    public bool testProxy( string proxy, int port, int listpos )
    {
    try
    {
        WebClient web = new WebClient();
        web.Proxy = new WebProxy( proxy, port);
        web.DownloadString("http://www.google.com/ncr");
        return true;
    }
    catch
    {
        proxy_list.RemoveAt(listpos);
    }
}