我有一些AudioSink
分配给某些CaptureSource
。
CaptureSource captureSource = new CaptureSource() {
VideoCaptureDevice = null,
AudioCaptureDevice = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice()
};
SampleAudioSink audioSink = new SampleAudioSink() {
CaptureSource = captureSource
};
captureSource.Start();
AudioSink
实现只是记录被调用函数以查看它是否正常工作。但是,OnSamples
方法在37个样本后停止调用。
OnCaptureStopped
; CaptureSource
应该不断调用此函数。 CaptureSource
也不会调用CaptureFailed
事件。
什么可能产生这种奇怪的行为,我可以采取什么措施来修复它?
我已将完整的源代码上传到Pastebin
答案 0 :(得分:2)
问题是垃圾收集器在18秒后删除了AudioSink
...
将AudioSink
添加为类成员解决了这个问题。
[...]
TextBox log;
SampleAudioSink audioSink; // to prevent garbage collector from collection
private void Application_Startup (object sender, StartupEventArgs e) {
[...]
}
[...]