2
A
回答
0
问题是PlaySync会阻塞该线程,所以其他消息将不会被处理。这包括来自Tick事件的停止命令。你必须使用普通的Play函数,它将是异步的,并创建一个新线程来播放文件。根据应用程序的工作方式,你将不得不处理最终的多线程情况。
+0
我试过这样做,并更新了上面的代码。请你看看,因为它还没有工作?我猜这是一个线程问题。 – 2011-12-16 09:13:49
+0
你的程序的其余部分是做什么的?你的代码大部分工作,除了你应该Stop()和Dispose()在ClockTick上的定时器来停止计时器反复发射。如果您的程序在最后退出,则该文件将无法播放,就像您有一个不等待任何用户输入的控制台应用程序一样。 – 2011-12-20 09:57:28
0
我会建立一些类似于这样的东西:它只是在编辑窗口中手写而已,所以不要指望它像这样编译。这只是为了说明这个想法。
internal class MusicPlayer
{
private const int duration = 1000;
private Queue<string> queue;
private SoundPlayer soundPlayer;
private Timer timer;
public MusicPlayer(params object[] filenames)
{
this.queue = new Queue<string>();
foreach (var filenameObject in filenames)
{
var filename = filenameObject.ToString();
if (File.Exists(filename))
{
this.queue.Enqueue(filename);
}
}
this.soundPlayer = new SoundPlayer();
this.timer = new Timer();
timer.Elapsed += new System.Timers.ElapsedEventHandler(ClockTick);
}
public event EventHandler OnDonePlaying;
public void PlayAll()
{
this.PlayNext();
}
private void PlayNext()
{
this.timer.Stop();
var filename = this.queue.Dequeue();
this.soundPlayer.SoundLocation = filename;
this.soundPlayer.Play();
this.timer.Interval = duration;
this.timer.Start();
}
private void ClockTick(object sender, EventArgs e)
{
if (queue.Count == 0) {
this.soundPlayer.Stop();
this.timer.Stop();
if (this.OnDonePlaying != null)
{
this.OnDonePlaying.Invoke(this, new EventArgs());
}
}
else
{
this.PlayNext();
}
}
}
0
试试这个:
ThreadPool.QueueUserWorkItem(o => {
note.Play();
Thread.Sleep(1000);
note.Stop();
});
相关问题
- 1. 的MediaPlayer播放音乐文件,只有在播放音乐文件如下
- 2. 如何使用simpleaudioengine在指定的时间内播放音频
- 3. 如何在音乐播放器中播放LRC和音乐
- 4. 当我的滑块拇指在中间时,音乐音量如何不播放?
- 5. 下载时播放音乐文件
- 6. 如何在启动时播放音乐?
- 7. 从文件管理器播放音乐文件到我的音乐播放器
- 8. 从停止播放音乐的时刻继续播放音乐
- 9. 音乐播放不间断
- 10. 在Android音乐播放器中播放音频文件
- 11. 如何在内置播放器中播放音乐
- 12. 音乐播放
- 13. 在Android中播放音乐文件
- 14. 在音乐库中播放音乐文件
- 15. iOS:在特定时间在后台播放/停止音乐
- 16. 音乐文件没有得到明显的播放音乐
- 17. 如何在java中播放mp3音乐文件(多于一首音乐)?
- 18. 连续播放音乐的音乐
- 19. Android使用默认音乐播放AMR文件音乐播放器
- 20. 如何在音乐播放器中设置音乐播放滑块
- 21. 如何播放音乐,以便在结束后自动播放音乐?
- 22. 如何在录制语音的同时播放背景音乐?
- 23. 如何播放存储在ArrayList中的所有音乐文件
- 24. 播放音乐javascript
- 25. 跟踪音乐/ mp3文件播放?
- 26. 哪类适合播放音乐文件?
- 27. 音乐文件不能播放
- 28. 在google中播放mp3播放音乐
- 29. 如何在特定按钮显示时播放音乐?
- 30. 如何在webview中播放音乐?
是否使用普通的C#这一点,或者你正在使用XNA框架吗? – 2011-12-16 10:13:04