0
我创建了一个类,它来自System.Windows.Media.AudioSink
以提供录制功能。要检查我的混凝土水槽的状态我做了以下内容:检查CaptureSource.State时出现InvalidOperationException
public class MyViewModel
{
private readonly MyAudioSink _myAudioSink; // this field is ensured in the ctor
public bool IsRecording
{
get
{
if (this._myAudioSink == null)
{
return false; // I know that `false` is wrong ...
}
return this._myAudioSink.CaptureSource.State == CaptureState.Started;
}
}
}
有时,当我询问对proprety IsRecording
,我得到以下异常:
{System.InvalidOperationException: Capture source is not stopped
at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
at MS.Internal.XcpImports.SetValue(IManagedPeerBase obj, DependencyProperty property, DependencyObject doh)
at System.Windows.DependencyObject.SetValue(DependencyProperty property, DependencyObject doh)
at System.Windows.Media.CaptureSource..ctor()
at MS.Internal.CoreTypes.GetCoreWrapper(UInt32 typeId)
at MS.Internal.ManagedPeerTable.EnsureManagedPeer(IntPtr unmanagedPointer, Int32 typeIndex, Type type, Boolean preserveManagedObjectReference)
at MS.Internal.XcpImports.ConvertDO(IntPtr doPointer, Int32 typeIndex, Boolean releaseObjectReference)
at MS.Internal.XcpImports.ConvertType(CValue outVal, Int32 typeIndex, Boolean releaseObjectReference, Boolean deleteBuffer, IManagedPeerBase fromObject)
at MS.Internal.XcpImports.AudioSink_GetSource(AudioSink Sink)
at System.Windows.Media.AudioSink.get_CaptureSource()
at MyViewModel.get_IsRecording()
有时候,当我做this._myAudioSink.Stop()
,我得到以下(类似)例外:
{System.InvalidOperationException: Capture source is not stopped
at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
at MS.Internal.XcpImports.SetValue(IManagedPeerBase obj, DependencyProperty property, DependencyObject doh)
at System.Windows.DependencyObject.SetValue(DependencyProperty property, DependencyObject doh)
at System.Windows.Media.CaptureSource..ctor()
at MS.Internal.CoreTypes.GetCoreWrapper(UInt32 typeId)
at MS.Internal.ManagedPeerTable.EnsureManagedPeer(IntPtr unmanagedPointer, Int32 typeIndex, Type type, Boolean preserveManagedObjectReference)
at MS.Internal.XcpImports.ConvertDO(IntPtr doPointer, Int32 typeIndex, Boolean releaseObjectReference)
at MS.Internal.XcpImports.ConvertType(CValue outVal, Int32 typeIndex, Boolean releaseObjectReference, Boolean deleteBuffer, IManagedPeerBase fromObject)
at MS.Internal.XcpImports.AudioSink_GetSource(AudioSink Sink)
at System.Windows.Media.AudioSink.get_CaptureSource()
那么...这是什么原因?我怎样才能防止这种异常(除了介绍我自己的领域,并将其设置在OnCaptureStarted
和OnCaptureStopped
的覆盖范围内)?
我在网上找到了这个问题的唯一话题就是here ......