gpt4 book ai didi

c# - 多线程代理检查器

转载 作者:可可西里 更新时间:2023-11-01 10:28:39 25 4
gpt4 key购买 nike

我的代码很少,比如:

            using (WebClient wc = new WebClient())
{
wc.Proxy = new WebProxy("IP", Port);

resume:
if (!wc.IsBusy)
{
string rtn_msg = string.Empty;
try
{
rtn_msg = wc.DownloadString(new Uri("http://google.com/"));
}
catch (WebException) { }
catch (Exception) { }
}
else
{
System.Threading.Thread.Sleep(1000);
goto resume;
}
}

我正在尝试将它与 ThreadPool 一起使用:

        foreach (Proxy proxy in s)
{
ThreadPool.QueueUserWorkItem((c) =>
{
this.CheckProxy(proxy);
});
}

问题是列表中的最后一个代理被所有线程检查。

例如,对于代理列表中的 ip1、ip2、ip3、ip4,所有线程都检查列表中的最后一项 ip4。

这是为什么呢?关于如何让它工作的任何建议?

最佳答案

如果您有像 ReSharper 这样的工具,它会通过 Access to modified closure 警告您。您需要制作一个本地副本:

    foreach (Proxy proxy in s)
{
var p = proxy;
ThreadPool.QueueUserWorkItem((c) =>
{
this.CheckProxy(p);
});
}

我还建议将您的 goto 更改为 while 循环。 Goto 被认为是不好的做法,在您的情况下,您不会从中获得任何好处。

关于c# - 多线程代理检查器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6235651/

25 4 0
文章推荐: java.lang.NoClassDefFoundError : org/apache/axis2/AxisFault When axis2-kernel-1. 5.4.jar在类路径中
文章推荐: windows - WinSock recv() 超时 : setsockopt()-set value + half a second?
文章推荐: css - 如何隐藏HTML