TaskFactory更改参数

时间:2014-04-04 00:39:06

标签: c# multithreading taskfactory

所以我有以下代码:

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?)。但问题仍然存在......

有人可以帮助我吗?

0 个答案:

没有答案