所以我并不是很熟悉 C# 编程语言,但是我已经在做一些测试应用程序。
我注意到,如果我为正在工作的应用程序创建更多的线程,我的 GUI 就越容易冻结。我不确定为什么会发生这种情况,我之前认为多线程应用程序的一部分目的是避免 GUI 冻结。
我希望能够得到解释。
此外,这是我用来创建线程的代码:
我注意到,如果我为正在工作的应用程序创建更多的线程,我的 GUI 就越容易冻结。我不确定为什么会发生这种情况,我之前认为多线程应用程序的一部分目的是避免 GUI 冻结。
我希望能够得到解释。
此外,这是我用来创建线程的代码:
private void runThreads(int amount, ThreadStart address)
{
for (int i = 0; i < amount; i++)
{
threadAmount += 1;
Thread currentThread = new Thread(address);
currentThread.Start();
}
}
以下是线程运行的内容:
private void checkProxies()
{
while (started)
{
try
{
WebRequest request = WebRequest.Create("http://google.co.nz/");
request.Timeout = (int)timeoutCounter.Value * 1000;
request.Proxy = new WebProxy(proxies[proxyIndex]);
Thread.SetData(Thread.GetNamedDataSlot("currentProxy"), proxies[proxyIndex]);
if (proxyIndex != proxies.Length)
{
proxyIndex += 1;
}
else
{
started = false;
}
request.GetResponse();
workingProxies += 1;
}
catch (WebException)
{
deadProxies += 1;
}
lock ("threadAmount")
{
if (threadAmount > proxies.Length - proxyIndex)
{
threadAmount -= 1;
break;
}
}
}
}
amount
参数传入的是什么值?你正在启动多少个线程? - Yuval Itzchakov