Нарушение доступа к renderbitmap

В настоящее время я занимаюсь разработкой приложения UWP, которое берет подпись и преобразует ее в base64 для использования в Интернете. Как ни странно, иногда это работает, а в других - нет и выдает ошибку нарушения доступа.

Строка кода

await renderBitmap.RenderAsync(canvas);

Это помещается в диспетчер, чтобы он мог получить доступ к потоку пользовательского интерфейса и имел некоторый успех, но не всегда. Код, который я использую для преобразования изображения:

await Dispatcher.RunTaskAsync(async () =>
{
    try
    {
        var renderBitmap = new RenderTargetBitmap();
        Debug.WriteLine("rendering bitmap");
        await renderBitmap.RenderAsync(canvas);
        Debug.WriteLine("rendered bitmap");

        var bitmap = renderBitmap;
        var img = (await bitmap.GetPixelsAsync()).ToArray();
        Debug.WriteLine("stage 1 passed - bitmap render");
        var encoded = new InMemoryRandomAccessStream();
        var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, encoded);
        encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight,
                      (uint)bitmap.PixelWidth, (uint)bitmap.PixelHeight, 96, 96, img);
        Debug.WriteLine("stage 1 passed - created encoder");
        await encoder.FlushAsync();
        encoded.Seek(0);
        var bytes = new byte[encoded.Size];
        await encoded.AsStream().ReadAsync(bytes, 0, bytes.Length);
        retVal = Convert.ToBase64String(bytes);
    }
    catch (Exception e)
    {
        Debug.WriteLine("Crashed when getting signature. Error Message Below" + Environment.NewLine + e.InnerException.ToString());
    }
}

Я надеялся, что кто-нибудь может помочь мне с этой проблемой, так как отладчик падает на этой линии.

Спасибо!

0 ответов

Другие вопросы по тегам