だから私は次のコードを持っています:
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 「開始」を印刷すると、実行中の「スレッド」に応じて「someValue」と「someHigherValue」を返す必要がありますが、奇妙な値40、50などを返します(1、2、3を返す必要がある場合でも) ...
GC.SuppressFinalize(this); を使用してみました。int を null に設定すると、それらを null にすることができます (int?)。しかし、問題はまだそこにあります...
誰かが私を助けることができますか?