我目前正在开发一个带签名的UWP应用程序,并将其转换为base64以便在线使用。奇怪的是,它有时会起作用,但有些则不会,并且会出现访问冲突错误
代码行是
await renderBitmap.RenderAsync(canvas);
这是放在一个调度程序中,以便它可以访问UI线程并取得了一些成功,但并非总是如此。我用它来转换图像的代码是:
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());
}
}
希望有人可以帮我解决这个问题,因为调试器在这一行崩溃了。
谢谢!