UWP FileOpenPicker 在调试中锁定\冻结应用程序 [英] UWP FileOpenPicker locks\freezes app in debug

查看:26
本文介绍了UWP FileOpenPicker 在调试中锁定\冻结应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果附加了调试器,调用此函数会导致应用程序挂起.如果我在没有调试器的情况下运行,则不会挂起,并且文件选择器可以完美运行.

 private async void OnClick(object sender, RoutedEventArgs e){FileOpenPicker openPicker = new FileOpenPicker();}

我确定这是一件非常简单的事情,但我就是不知道.

这是我如何使用它.请记住,更简单的函数会在没有我所有额外代码的情况下创建挂起问题.我已经塞满了图像保存,但这是一个单独的问题,当我解决这篇文章的内容时,我想调试.

<预><代码>.公共异步任务 ImportHeader(){FileOpenPicker openPicker = new FileOpenPicker();openPicker.ViewMode = PickerViewMode.Thumbnail;openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;openPicker.FileTypeFilter.Add(".jpg");openPicker.FileTypeFilter.Add(".png");//多张图片选择var files = await openPicker.PickMultipleFilesAsync();foreach(文件中的StorageFile singleImage){IRandomAccessStream stream = await singleImage.OpenAsync(Windows.Storage.FileAccessMode.Read);var image = new BitmapImage();image.SetSource(stream);HeaderImage.Source = 图像;//我们也将其保存到磁盘以备后用Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;Windows.Storage.StorageFile file = await storageFolder.CreateFileAsync("header.jpg", Windows.Storage.CreationCollisionOption.ReplaceExisting);流.寻求(0);使用 (StreamWriter bw = new StreamWriter(file.OpenStreamForWriteAsync().Result)){var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream);var renderTargetBitmap = new RenderTargetBitmap();等待 renderTargetBitmap.RenderAsync(HeaderImage, (int)HeaderImage.Width, (int)HeaderImage.Height);var pixel = await renderTargetBitmap.GetPixelsAsync();byte[] bytes = pixel.ToArray();bw.Write(流);}}}

解决方案

这也发生在我最近的一些 Windows 10 Insider Preview 版本中,而该过程在 Windows 10 的稳定版本上完美无缺.我想你可以假设原因在那里而不是您的代码.

If the debugger is attached, calling this function causes the app to hang. If I run without a debugger, there is no hang, and file pickers work perfectly.

    private async void OnClick(object sender, RoutedEventArgs e)
    {
        FileOpenPicker openPicker = new FileOpenPicker();
    }

I'm certain this is something super simple, but I just don't know.

Edit:

Here's how I'm using it. Keep in mind, that the simpler function creates the hang issue without all my extra code after it. I've stuffed up the image saving, but that's a separate issue I want to debug when I solve what this post is about.

.

   public async Task ImportHeader()
        {
             FileOpenPicker openPicker = new FileOpenPicker();
            openPicker.ViewMode = PickerViewMode.Thumbnail;
            openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
            openPicker.FileTypeFilter.Add(".jpg");
            openPicker.FileTypeFilter.Add(".png");

            // For multiple image selection
            var files = await openPicker.PickMultipleFilesAsync();
            foreach (StorageFile singleImage in files)
            {
                IRandomAccessStream stream = await singleImage.OpenAsync(Windows.Storage.FileAccessMode.Read);

                var image = new BitmapImage();
                image.SetSource(stream);
                HeaderImage.Source = image;

                //We also save this to disk for later
                Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
                Windows.Storage.StorageFile file = await storageFolder.CreateFileAsync("header.jpg", Windows.Storage.CreationCollisionOption.ReplaceExisting);

                stream.Seek(0);

                using (StreamWriter bw = new StreamWriter(file.OpenStreamForWriteAsync().Result))
                {
                    var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream);

                    var renderTargetBitmap = new RenderTargetBitmap();
                    await renderTargetBitmap.RenderAsync(HeaderImage, (int)HeaderImage.Width, (int)HeaderImage.Height);
                    var pixels = await renderTargetBitmap.GetPixelsAsync();
                    byte[] bytes = pixels.ToArray();

                    bw.Write(stream);
                }
            }
        }

解决方案

This has happened to me as well on some of the recent Windows 10 Insider Preview builds, while the process works flawlessly on stable builds of Windows 10. I think you can assume the cause is there instead of your code.

这篇关于UWP FileOpenPicker 在调试中锁定\冻结应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆