2010-11-24 63 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方法中已過時的警告。它們因爲這個確切的原因而被廢棄。代碼中他們將凍結的確切位置是完全不可預知的。相當不好的消息,如果這是聲明。您還創建了一個這兩個將運行的時間段。

請勿爲此使用線程。