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):

  • 睡眠:不好

  • 事件阻止:好

看看这个最优秀的教程中的“同步要点”:

并将您的循环更改为:

1)调用其他一些函数来做“工作”

2)依赖一些全局“完成”变量(而不是在“TimeTick!= 0”时退出!!!!!)

于 2012-06-04T01:18:15.317 回答