Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 错误显示相机或消息_C#_Windows Runtime - Fatal编程技术网

C# 错误显示相机或消息

C# 错误显示相机或消息,c#,windows-runtime,C#,Windows Runtime,我有一个程序(WinRT)显示网络摄像机的视频流。初始化前后,程序调用函数ShowMessage。我评论了这些电话。如果代码运行,如下图所示,我可以看到来自网络摄像机的视频流。 但是,如果我取消注释calls函数ShowMessage,第一次调用(//第一次调用)完成,网络摄像机的视频流将显示,但第二次调用(//第二次调用)不是call(我看不到第二条消息)。如何才能使网络摄像头的视频流显示,并在调用ShowMessage时同时工作 XAML: C#: public主页() { this.I

我有一个程序(WinRT)显示网络摄像机的视频流。初始化前后,程序调用函数ShowMessage。我评论了这些电话。如果代码运行,如下图所示,我可以看到来自网络摄像机的视频流。 但是,如果我取消注释calls函数ShowMessage,第一次调用(//第一次调用)完成,网络摄像机的视频流将显示,但第二次调用(//第二次调用)不是call(我看不到第二条消息)。如何才能使网络摄像头的视频流显示,并在调用ShowMessage时同时工作

XAML:


C#:

public主页()
{
this.InitializeComponent();
Func unnamed=async()=>
{
等待TestPhoto();
};
未命名();
}
私有异步任务TestPhoto()
{
尝试
{
//等待ShowMessage(“做点什么”,true);//第一次呼叫
var devinfo collection=wait deviceinfo.findalsync(DeviceClass.VideoCapture);
var settings=新建Windows.Media.Capture.MediaCaptureInitializationSettings();
settings.VideoDeviceId=DeviceCollection[0]。Id;
var mediaCaptureMgr=new MediaCapture();
等待mediaCaptureMgr.InitializeAsync();
mediaCaptureMgr.SetPreviewMirroring(true);
myCaptureElement.Source=mediaCaptureMgr;
等待mediaCaptureMgr.StartPreviewSync();
ImageEncodingProperties imageProperties2=ImageEncodingProperties.CreateJpeg();
var memStream3=新的Windows.Storage.Streams.InMemoryRandomAccessStream();
var mediaCaptureMgr1=new MediaCapture();
等待mediaCaptureMgr1.InitializeAsync();
mediaCaptureMgr1.SetPreviewMirroring(true);
等待mediaCaptureMgr1.CapturePhotoToStreamAsync(imageProperties2,memStream3);
等待memStream3.FlushAsync();
memStream3.Seek(0);
WriteableBitmap wp1=新的WriteableBitmap(1,1);
等待wp1.SetSourceAsync(memStream3);
//等待ShowMessage(“做点什么”,false);//第二次呼叫
}
捕获(例外)
{
}
}
公共异步任务ShowMessage(字符串s,bool b)
{
wait Dispatcher.RunAsync(CoreDispatcherPriority.Normal,()=>
{
如果(b)
{
rect1.Visibility=Visibility.Collapsed;
}
其他的
{
rect1.Visibility=Visibility.Visible;
}
});
随机r=新随机();
等待新消息对话框(s+“”+r.Next(1000),“信息”).ShowAsync();
}

你说的不做是什么意思?您是否已通过代码查看是否调用了ShowMessage?可能
等待wp1.SetSourceAsync(memStream3)呼叫永不返回?如果我在“Wait mediaCaptureMgr1.CapturePhotoToStreamAsync(imageProperties2,memStream3)”;之前调用了第二次ShowMessage函数,我会看到第二条消息。但是在“wait mediaCaptureMgr1.CapturePhotoToStreamAsync(ImageProperties 2,memStream3);”之后,如果我调用函数ShowMessage,我将永远看不到第二条消息,因为在第二次调用时函数ShowMessage不会调用。@Jon Maximys。我也有同样的问题。你解决了吗?如果是,怎么做?
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <CaptureElement x:Name="myCaptureElement" Margin="504,124,400,350" FlowDirection="RightToLeft" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Fill" MinWidth="300" MinHeight="200" Height="294" Width="462" />
    <Rectangle x:Name="rect1" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" Margin="43,292,0,0" Stroke="Black" VerticalAlignment="Top" Width="100"/>
</Grid>
public MainPage()
    {
        this.InitializeComponent();

        Func<Task> unnamed = async () =>
        {
            await TestPhoto();
        };
        unnamed();
    }


    private async Task TestPhoto()
    {
        try
        {
            //await ShowMessage("Do something",true);//first call

            var devInfoCollection = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);
            var settings = new Windows.Media.Capture.MediaCaptureInitializationSettings();
            settings.VideoDeviceId = devInfoCollection[0].Id;
            var mediaCaptureMgr = new MediaCapture();
            await mediaCaptureMgr.InitializeAsync();
            mediaCaptureMgr.SetPreviewMirroring(true);
            myCaptureElement.Source = mediaCaptureMgr;
            await mediaCaptureMgr.StartPreviewAsync();



            ImageEncodingProperties imageProperties2 = ImageEncodingProperties.CreateJpeg();
            var memStream3 = new Windows.Storage.Streams.InMemoryRandomAccessStream();
            var mediaCaptureMgr1 = new MediaCapture();
            await mediaCaptureMgr1.InitializeAsync();
            mediaCaptureMgr1.SetPreviewMirroring(true);
            await mediaCaptureMgr1.CapturePhotoToStreamAsync(imageProperties2, memStream3);
            await memStream3.FlushAsync();
            memStream3.Seek(0);


            WriteableBitmap wp1 = new WriteableBitmap(1, 1); ;
            await wp1.SetSourceAsync(memStream3);

            //await ShowMessage("Do something",false);//second call
        }
        catch (Exception)
        {

        }

    }

    public async Task ShowMessage(String s, bool b)
    {

        await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                                                                     {
                                                                            if (b)
                                                                            {
                                                                                rect1.Visibility=Visibility.Collapsed;
                                                                            }
                                                                            else
                                                                            {
                                                                                rect1.Visibility=Visibility.Visible;
                                                                            }
                                                                     });
        Random r=new Random();
        await new MessageDialog(s+" "+r.Next(1000), "Information").ShowAsync();
    }