我正在尝试将我在 Canvas 上编写的 Ink 保存在一个类中,并使用在此找到的这两种方法重新加载它link.
private async Task<string> WriteInk() {
using (var stream = new InMemoryRandomAccessStream()) {
await inkManager.SaveAsync(stream);
await stream.FlushAsync();
stream.Seek(0);
byte[] bytes = new byte[stream.Size];
IBuffer buffer = bytes.AsBuffer();
await stream.ReadAsync(buffer, (uint)stream.Size, InputStreamOptions.None);
return Convert.ToBase64String(bytes);
}
}
private async void ReadInk(string base64) {
if (string.IsNullOrEmpty(base64)) return;
var bytes = Convert.FromBase64String(base64);
using (var stream = new InMemoryRandomAccessStream()) {
await stream.WriteAsync(bytes.AsBuffer());
await stream.FlushAsync();
stream.Seek(0);
await inkManager.LoadAsync(stream);
if (inkManager.GetStrokes().Count > 0) {
RenderInk();
}
}
}
我有一个类,我保存从返回的base64WriteInk()
:
public class MyCanvas
{
public string canvasIndex { get; set; }
public String canvasStrokes { get; set; }
}
我的问题是打电话时WriteInk()
:
MyCanvas mc = new MyCanvas();
mc.canvasStrokes = await m_CanvasManager1.WriteInk();
我得到一个异常:灾难性失败。
+ 我做不到canvasStrokes
类型的string
并保存Task<string>
到它
+ 方法ReadInk()
将base64作为string
我应该保存为什么类型Task<string>
能够将其用作string
在第二种方法中?
当我调用 WriteInk 时,它到达await inkCanvas.SaveAsync(stream);
它返回到它被调用的地方mc.canvasStrokes = await m_CanvasManager0.WriteInk();
并给出这个例外:
An exception of type 'System.Exception' occurred in mscorlib.dll but was not handled in user code. Additional information: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))