所以我有一个参数化的线程启动,它初始化了一些 NAudio 的东西......但我需要一个单独的线程告诉 NAudio 线程启动。当我尝试它时,它崩溃了。如何实现安全的跨线程通信?
这是线程(这个类成为主线程中的音频对象):
class Audio
{
public IWavePlayer OutDevice;
public WaveStream OutStream;
public Thread thread;
public Audio(string file)
{
this.thread = new Thread(new ParameterizedThreadStart(InitAudio)); thread.Start(file);
}
private void InitAudio(object data) {
this.OutDevice = new WaveOut();
this.OutStream = new WaveChannel32(new Mp3FileReader(data.ToString()));
this.OutDevice.Init(OutStream);
}
}
我需要能够让我的主线程调用 audio.OutDevice.Play(); 但我不能,因为它是跨线程的并且它崩溃了。我该怎么做?