windows - UWP FileOpenPicker låser \ fryser app i fejlfinding

Indlæg af Hanne Mølgaard Plasc

Problem



Hvis debuggeren er vedhæftet, får appen til at hænge ved at kalde denne funktion. Hvis jeg kører uden en debugger, er der ingen hæng, og filplukkere fungerer perfekt.


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


Jeg er sikker på, at dette er noget super simpelt, men jeg ved det bare ikke.





Her er hvordan jeg bruger det. Husk, at den enklere funktion skaber hængeproblemet uden al min ekstra kode efter den. Jeg har fyldt op billedbesparelsen, men det er et særskilt problem, jeg vil fejle, når jeg løser hvad dette indlæg handler om.


.

   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);
                }
            }
        }

Bedste reference


Dette har også været tilfældet med nogle af de seneste Windows 10 Insider Preview-bygger, mens processen fungerer fejlfrit på stabile builds af Windows 10. Jeg tror, ​​du kan antage årsagen er der i stedet for din kode.