如何切换线程

时间:2010-11-24 18:48:01

标签: c# .net multithreading

我有2个帖子。我需要通过按键切换它们。

Thread outputplayer = new Thread(PlayerOutput);
Thread outputplaylist = new Thread(PlaylistOutput);


outputplayer.Start(player);
outputplaylist.Start(player);
outputplaylist.Suspend();


        while (true)
        {
            if (changePlaylist)
            {
                if (playlist)
                {
                    changePlaylist = false;

                    outputplaylist.Resume();
                    outputplayer.Suspend();
                }
                else
                {
                    changePlaylist = false;

                    outputplayer.Resume();
                    outputplaylist.Suspend();
                }
            }
            HandleInput(player);
        }

我尝试了这个,但它并不总是切换。

当我按下一个键时,第一个线程应该停止/暂停,第二个线程应该开始执行。当我再次按下键时,第二个线程应该停止/暂停,第一个线程应该开始执行。等等。 1 => 2 => 1 => 2 ......

我该怎么办?

1 个答案:

答案 0 :(得分:11)

忽略Suspend和Resume方法上的过时警告。它们因完全原因而被废弃。代码中它们将冻结的确切位置是完全不可预测的。如果它在 lock 语句中,那是个坏消息。您还创建了一个时间段,其中两个将运行。

不要使用线程。