Итак, у меня есть параметризованный запуск потока, который инициализирует некоторые файлы 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 поток вызова(); но я не могу, потому что это перекрестная резьба, и она падает. Как мне это сделать?
Я не знаю этого SDK, но если вы получили эту ошибку из элемента управления Windows Forms, я бы сказал, что вам нужно вызвать метод Invoke для элемента управления. –
Можете ли вы объяснить, «он падает» лучше, возможно, с примером исключения? –
Сбой из-за двух потоков, разделяющих один и тот же ресурс, что приводит к нарушениям доступа. – sableguy00