将 Task 类型保存到 String 会导致灾难性失败

2023-11-30

我正在尝试将我在 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))


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Task 类型保存到 String 会导致灾难性失败 的相关文章

随机推荐