我有以下代码:
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并且我想恢复播放时,我无法做到。 帮助将不胜感激。
答案 0 :(得分:2)
线程(任何线程,而不仅仅是.Net):
睡觉:不好
Block-on-Event:GOOD
在这个最优秀的教程中查看“Synchronization Essentials”:
将你的循环改为:
1)将一些其他功能调用到“工作”
2)依赖一些全局“完成”变量(而不是在“TimeTick!= 0”时退出!!!!!)