UWP FileOpenPicker 在调试中锁定\冻结应用程序 [英] UWP FileOpenPicker locks\freezes app in debug
问题描述
如果附加了调试器,调用此函数会导致应用程序挂起.如果我在没有调试器的情况下运行,则不会挂起,并且文件选择器可以完美运行.
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屋!