使用标志恢复已停止的线程

时间:2012-06-04 01:12:20

标签: c# multithreading

我有以下代码:

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并且我想恢复播放时,我无法做到。 帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

线程(任何线程,而不仅仅是.Net):

  • 睡觉:不好

  • Block-on-Event:GOOD

在这个最优秀的教程中查看“Synchronization Essentials”:

将你的循环改为:

1)将一些其他功能调用到“工作”

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