0

所以我有以下代码:

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?)。然而问题依然存在……

有人能帮我吗?

4

0 回答 0