2

次のコードは、マルチスレッドなしで正常に動作します。しかし、スレッドを使用すると失敗します。checkedListBox で複数の項目を選択すると、最初の項目は無視され、他の項目はランダムになります...

データのコミットに問題があると思います。どう思いますか?

    private void sendCom(String com)
    {
        //send command to selected item
        int i=0;
        String IP;
        foreach (var item in checkedListBox1.CheckedItems)
        {
            Console.WriteLine(item.ToString());
            IP = item.ToString();
            theThreads[i] = new Thread(new ThreadStart(() => sendComThread(IP, com) ));
            theThreads[i].Start();
            //sendCom(IP, com);
            i++;
        }
    }

    private void sendComThread(String IP, String com)
    {
        // send an command
        System.Console.WriteLine(IP + com);
    }
4

4 に答える 4