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 「開始」を印刷すると、実行中の「スレッド」に応じて「someValue」と「someHigherValue」を返す必要がありますが、奇妙な値40、50などを返します(1、2、3を返す必要がある場合でも) ...

GC.SuppressFinalize(this); を使用してみました。int を null に設定すると、それらを null にすることができます (int?)。しかし、問題はまだそこにあります...

誰かが私を助けることができますか?

4

0 に答える 0