Нарушение доступа к 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());
}
}
Я надеялся, что кто-нибудь может помочь мне с этой проблемой, так как отладчик падает на этой линии.
Спасибо!