打开发布模式时,无法将UWP App中的InkCanvas内容保存到SQLite数据库中

时间:2016-11-20 19:28:09

标签: uwp inkcanvas

我在UWP App中保存InkCanvas的内容时遇到问题。在调试模式下,它完美地运行。在发布模式下,我无法保存。

sqlite DB中的blob始终为空(在发布模式下)。

这是我的代码:

static public byte[] GetByteArray(InkCanvas CardInkCanvas) {
    MemoryStream ms = new MemoryStream();

    // Write the ink strokes to the output stream.
    using(IOutputStream outputStream = ms.AsOutputStream()) {
        CardInkCanvas.InkPresenter.StrokeContainer.SaveAsync(ms.AsOutputStream());
        outputStream.FlushAsync();
    }

    return ms.ToArray();
}

也许UWP专业人士可以帮助我:)。

感谢Agredo

1 个答案:

答案 0 :(得分:0)

  

我在UWP App中保存InkCanvas的内容时遇到问题。在调试模式下,它完美地运行。在发布模式下,我无法保存。

默认情况下发布编译使用.Net Native。因此,与调试模式相比,存在一些不同的行为。

在这种情况下,CardInkCanvas.InkPresenter.StrokeContainer.SaveAsyncoutputStream.FlushAsync是异步功能,您需要在它们之前添加await。所以你的代码应该是这样的:

static public async Task<byte[]> GetByteArray(InkCanvas CardInkCanvas) {
    MemoryStream ms = new MemoryStream();

    // Write the ink strokes to the output stream.
    using(IOutputStream outputStream = ms.AsOutputStream()) {
        //Add await before async functions so that the async functions get executed before return.
        await CardInkCanvas.InkPresenter.StrokeContainer.SaveAsync(ms.AsOutputStream());
        await outputStream.FlushAsync();
    }

    return ms.ToArray();
}