所以我有以下代码:
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?)。然而问题依然存在……
有人能帮我吗?