【发布时间】:2018-05-23 14:32:39
【问题描述】:
如果附加了调试器,调用此函数会导致应用挂起。如果我在没有调试器的情况下运行,则不会挂起,并且文件选择器可以正常工作。
private async void OnClick(object sender, RoutedEventArgs e)
{
FileOpenPicker openPicker = new FileOpenPicker();
}
我确定这是非常简单的事情,但我就是不知道。
编辑:
这是我的使用方法。请记住,更简单的函数会在没有我所有额外代码的情况下产生挂起问题。我已经塞满了图像保存,但这是我在解决这篇文章的内容时想要调试的一个单独问题。
.
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);
}
}
}
【问题讨论】:
-
您的代码示例似乎缺少某些内容。您究竟是如何显示文件选择器对话框的?
-
我已经添加了我正在使用的实际代码的上下文。然而,更简单的第一行在没有所有其他内容的情况下重新创建了挂起。
-
你的两个代码示例在我的机器上都可以正常工作,不管有没有调试器。
-
只是为了测试,能不能做一个空白的UWP项目,在里面某处执行
FileOpenPicker openPicker = new FileOpenPicker();这行代码? -
您是否有机会使用 Insider 版本?我们最近遇到了一个错误,该错误会溜到内幕,导致在某些情况下(包括文件选择器)在调试下挂起。请运行“winver”并分享输出。
标签: windows uwp windows-10-universal