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. 如何在java中播放mp3音樂文件(多於一首音樂)?
- 13. 如何在音樂播放器中設置音樂播放滑塊
- 14. 如何播放音樂,以便在結束後自動播放音樂?
- 15. 如何在錄製語音的同時播放背景音樂?
- 16. 播放音樂javascript
- 17. 在google中播放mp3播放音樂
- 18. 如何播放存儲在ArrayList中的所有音樂文件
- 19. 哪類適合播放音樂文件?
- 20. 跟蹤音樂/ mp3文件播放?
- 21. 音樂文件不能播放
- 22. 如何在特定按鈕顯示時播放音樂?
- 23. 如何在C++中播放音樂
- 24. 如何在Android Studio中播放音樂?
- 25. 如何讓Android上的音樂播放器按鈕像谷歌播放音樂
- 26. 在android中播放音樂
- 27. Swift - 同時播放音頻文件和iTunes音樂
- 28. 播放特定圖像時播放音樂android
- 29. 如何從播放音樂播放器錄製音頻
- 30. 在QT上播放音樂時出錯
是否使用普通的C#這一點,或者你正在使用XNA框架嗎? – 2011-12-16 10:13:04