使用Naudio延迟wav播放。错误使用线程?

时间:2014-02-01 21:00:52

标签: c# multithreading naudio

我希望将Naudio用于我正在制作的游戏中。

我编写了一个简单的初始化例程,目前有:

                IWavePlayer wavePlayer1;
                AudioFileReader file1;
                string filename1 = "D:\\Programming\\SFX\\MUSIC\\IN_GAME_1.wav";

                wavePlayer1 = new WaveOut();
                file1 = new AudioFileReader(filename1);
                wavePlayer1.Init(file1);
                Thread thread1 = new Thread(new ThreadStart(wavePlayer1.Play));
                thread1.Start();

当我运行游戏时,wav文件可能会播放半秒钟,然后停止播放,一秒钟后它会恢复播放。

如果我在启动线程后立即放置System.Threading.Thread.Sleep(5000),则延迟还有5秒。这似乎证明'thread1.Start();'实际上并没有在它自己的线程中启动声音。

作为一个线程和Naudio noob谁能​​告诉我我在这里做错了什么?我对游戏的要求就是能够同时播放几种声音。没什么大不了的。

有什么想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

呼叫Play只是开始播放。在播放完成之前它不会阻止。所以根本不需要线程。只需致电wavePlayer1.Play即可。您需要订阅PlaybackStopped,以便妥善处理输入文件和播放设备。