所以我有以下代码:
public void tViewers(int? start, int? stop)
{
for (int? i0 = start; i0 <= stop; i0++)
{
StartLabel:
Viewer v = new Viewer(channelNameTextBox.Text, this);
if (urlWithTokens.Contains(v.getViewerLink()))
{
goto StartLabel;
}
else
{
if (v.getViewerLink() != "")
{
Console.WriteLine("[V #" + i0 + "] SUCCESS");
urlWithTokens.Add(v.getViewerLink());
}
else
{
Console.WriteLine("Channel not found.");
showError("The channel name is not valid.", true);
this.Invoke(new Action(() => this.botControlls.Enabled = true));
urlWithTokens.Clear();
}
}
v = null; // clear
}
Console.WriteLine("[V] " + start + " to " + stop + " COMPLETED");
start = null;
stop = null;
GC.SuppressFinalize(this);
}
由以下人员执行:
for (int i = 0; i < maxThreads; i++)
{
taskFactory.StartNew(() => tViewers(someValue, someHigherValue));
}
这里的问题是tViwers中的本地参数“start”和“stop”,它会反转一些stange值。
fx如果我打印“start”它应该返回“someValue”和“someHigherValue”,具体取决于它运行的“线程”,但它返回奇怪的值40,50或其他东西(即使它应该返回1, 2,3 ...
我尝试过使用GC.SuppressFinalize(this);并将int设置为null我允许它们为null(int?)。但问题仍然存在......
有人可以帮助我吗?