C# 启动摄像头时抛出0x8013155

C# 启动摄像头时抛出0x8013155,c#,silverlight,windows-phone-7,C#,Silverlight,Windows Phone 7,我在尝试使用代码将光电摄像机设置为视频刷源时出现上述错误: camera = new PhotoCamera(); var videoBrush = new VideoBrush(); videoBrush.SetSource(camera); AR.Background = videoBrush; 我得到以下堆栈跟踪: 0x80131515 at MS.Internal.XcpImports.CheckHResult(UInt32 hr) at MS.Internal.XcpImports.

我在尝试使用代码将光电摄像机设置为视频刷源时出现上述错误:

camera = new PhotoCamera();
var videoBrush = new VideoBrush();
videoBrush.SetSource(camera);
AR.Background = videoBrush;
我得到以下堆栈跟踪:

0x80131515
at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
at MS.Internal.XcpImports.VideoBrush_SetExternalVideoSource(VideoBrush vb, IntPtr& videoSessionHandle)
at System.Windows.Media.VideoBrush.SetUpExternalVideoSession()
at Microsoft.Devices.CameraVideoBrushExtensions.SetSource(VideoBrush brush, Camera camera)
at MyClass.MyFunction()
at System.Windows.Controls.Frame.FireEventHandler[T](EventHandler`1 handler, Object sender, OrientationChangedEventArgs args)
at Microsoft.Phone.Controls.PhoneApplicationPage.UIOrientationChange(ShellPageOrientation orientation)
无论是否连接了调试器,都会引发异常


谢谢。

好了,我现在已经解决了这个问题。我认为其他人可能会欣赏这个解决方案,所以它就在这里

似乎不可能将光电摄像机作为源分配给以编程方式创建的VideoBrush,因此我编辑了xaml以包含

<Rectangle>
    <Rectangle.Fill>
        <VideoBrush x:Name="VB" />
    </Rectangle.Fill>
</Rectangle>
此外,此代码包含在OnOrientationChanged事件中,该事件似乎多次激发,因此包含在

if (!processing)
{
    processing = true;

    VB.SetSource(new PhotoCamera());

    var bw = new BackgroundWorker();
    bw.DoWork += (object, sender) => {
        Thread.Sleep(250);
        processing = false;
    }
}

代码运行平稳。

新的PhotoCamera(CameraType.FrontFacing)
中使用
FrontFacing
属性会导致我在
SetSource()
处出错。使用
CameraType.Primary
可以很好地处理编程创建的
VideoBrush
。您可能就是这样吗?

我使用了CameraType.Primary。我想我的电脑也可以使用编程创建的视频画笔。魔法似乎就在线程中。睡眠部分。为了不阻塞UI thead,后台工作人员似乎非常重要。
if (!processing)
{
    processing = true;

    VB.SetSource(new PhotoCamera());

    var bw = new BackgroundWorker();
    bw.DoWork += (object, sender) => {
        Thread.Sleep(250);
        processing = false;
    }
}