我有一些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 中,从而产生了问题
最佳答案
问题是垃圾收集器在18秒后删除了AudioSink
...
将AudioSink
添加为类成员可以解决此问题。
[...]
TextBox log;
SampleAudioSink audioSink; // to prevent garbage collector from collection
private void Application_Startup (object sender, StartupEventArgs e) {
[...]
}
[...]