2010-11-24 32 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); 
     } 

私はこれを試しましたが、常に切り替えるわけではありません。

キーを押すと、最初のスレッドは停止/一時停止し、2番目のスレッドは実行を開始する必要があります。もう一度キーを押すと、2番目のスレッドが停止/一時停止し、最初のスレッドが実行を開始するはずです。等々。 1 => 2 => 1 => 2 ...

どうすればよいですか?

+4

あなたが何をしていても、あなたはこのようにしません。実際に何をしようとしているのかを説明してください。 –

+0

私はもう一度説明しようとしました。 – Sergey

+3

これはスレッディングの全ポイントを敗北させませんか?すなわち、一度に2つの異なることをしますか?なぜ単なるスレッドを使用しないのですか? – Domenic

答えて

11

Do ではありません。は、SuspendメソッドとResumeメソッドで廃止された警告を無視します。彼らはこのため正確なの理由で廃止されました。フリーズするコード内の正確な場所は完全に予測できません。それがのロックの声明の中にあるなら、かなり悪いニュース。また、が実行されるタイムスロットを作成しました。

これにスレッドを使用しないでください。

+0

まさに答えは、1つの収集入力と、あなたとの間で仕事をしている2人の他のスレッドアーキテクチャーが処理/優先度/などを切り替えたいということです。 – zanlok

+0

この回答には十分な矢印がありません。 –

関連する問題