1

私は次のコードを持っています:

class SoundPlayback
{ 
        protected volatile bool _playing;
        public bool Playing {...}

        protected void Begin()
        {
            while (Playing && _sheet.TimeTick != 0)
            {
                _sheet.PlaySounds();
                Thread.Sleep(_sheet.TimeTick);
            }
            _playing = false;
        }
}

スレッド開始で Begin() を呼び出すスレッドがありますが、これは初めて正常に動作しますが、_playing が false で、再生を再開したい場合はできません。助けていただければ幸いです。

4

1 に答える 1

2

スレッド(.Netだけでなく、任意のスレッド):

  • 睡眠:悪い

  • ブロックオンイベント:GOOD

この最も優れたチュートリアルの「SynchronizationEssentials」をご覧ください。

そして、ループを次のように変更します。

1)「作業」に対して行う他の関数を呼び出します

2)グローバルな「done」変数に依存します(「TimeTick!= 0」のときに終了するのではなく!!!!!)

于 2012-06-04T01:18:15.317 に答える