我有一些AudioSink分配给了一些CaptureSource

CaptureSource captureSource = new CaptureSource() {
    VideoCaptureDevice = null,
    AudioCaptureDevice = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice()
};
SampleAudioSink audioSink = new SampleAudioSink() {
    CaptureSource = captureSource
};
captureSource.Start();
AudioSink实现只是记录调用的函数以查看其正常工作。但是,OnSamples方法在37个样本后停止被调用。
  • OnCaptureStarted
  • OnFormatChange
  • OnSamples(1)
  • OnSamples(2)
  • OnSamples(3)
  • [...]
  • OnSamples(35)
  • OnSamples(36)
  • OnSamples(37)

  • 从未调用OnCaptureStoppedCaptureSource应该连续调用此函数。 CaptureSource也不会调用CaptureFailed事件。

    什么会导致这种奇怪的行为,我应该采取什么措施加以解决?

    我已经将完整的源代码上传到Pastebin 中,从而产生了问题

    最佳答案

    问题是垃圾收集器在18秒后删除了AudioSink ...
    AudioSink添加为类成员可以解决此问题。

    [...]
    TextBox log;
    SampleAudioSink audioSink; // to prevent garbage collector from collection
    private void Application_Startup (object sender, StartupEventArgs e) {
        [...]
    }
    [...]
    

    10-07 16:49