我有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 ......
我该怎么办?
答案 0 :(得分:11)
不忽略Suspend和Resume方法上的过时警告。它们因完全原因而被废弃。代码中它们将冻结的确切位置是完全不可预测的。如果它在 lock 语句中,那是个坏消息。您还创建了一个时间段,其中两个将运行。
不要使用线程。