2010-11-24 69 views
0

我有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 ...

我该怎么办?

+4

无论你在做什么,你都不会以这种方式实现它。请解释你实际上在做什么。 – 2010-11-24 18:51:11

+0

我试着再解释一遍。 – Sergey 2010-11-24 18:56:04

回答

11

是否不是忽略Suspend和Resume方法中已过时的警告。它们因为这个确切的原因而被废弃。代码中他们将冻结的确切位置是完全不可预知的。相当不好的消息,如果这是声明。您还创建了一个这两个将运行的时间段。

请勿为此使用线程。