简体   繁体   中英

Windows Phone 8.1 app to share image - works fine on my phone with Visual Studio debugger attached, but crashes when run without the debugger

I'm trying to share an image through my app, everything works just fine when I run the app on my phone through visual studio, but when I try to run it from my phone, it crashes everytime I click the share button

  private async void dataTransferManager_DataRequested(DataTransferManager sender, DataRequestedEventArgs args)
    {
        args.Request.Data.Properties.Title = "Let's Celebrate";
        args.Request.Data.Properties.Description = "It's time to celebrate!";
        DataRequestDeferral deferral = args.Request.GetDeferral();
        try
        {
            var finalImg = await GenerateImage();

            var folder = Package.Current.InstalledLocation;
            const CreationCollisionOption option = CreationCollisionOption.ReplaceExisting;
            var file = await folder.CreateFileAsync("letscelebrateshare.png", option);
            var logicalDpi = DisplayInformation.GetForCurrentView().LogicalDpi;
            var pixelBuffer = await finalImg.GetPixelsAsync();

            using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
            {
                var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
                encoder.SetPixelData(
                BitmapPixelFormat.Bgra8,
                BitmapAlphaMode.Premultiplied,
                (uint)finalImg.PixelWidth,
                (uint)finalImg.PixelHeight,
                logicalDpi,
                logicalDpi,
                pixelBuffer.ToArray());

                await encoder.FlushAsync();

                StorageFile logoFile =
                    await Package.Current.InstalledLocation.GetFileAsync("letscelebrateshare.png");
                List<IStorageItem> storageItems = new List<IStorageItem>();
                storageItems.Add(logoFile);
                args.Request.Data.SetStorageItems(storageItems);
            }
        }
        finally
        {
            deferral.Complete();
        }

    }
    private async void bla... [..]
{
    Exception exc= null;

    try
    {
    //All your stuff
    }


    catch(Exception ex)
    {

     exc = ex;

    }

    if(exc!=null)
    await msg.ShowAsync();

}

Edit: Since I don't use WP in C#. I guess you could try this. Hope this helps ^^

I had the same issue while opening a file open picker. I found a weird solution. When I removed the navigation parameters in every pages and used static variables instead, worked fine for me. I guess this will help you

If the App is there crashing without debugger, try while debugging and the share targets are visible to "suspend and shutdown" ("Lifecycle Events" in visual studio). In most cases you app will then crash because it is suspended and serialize the data.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM