我在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
答案 0 :(得分:0)
我在UWP App中保存InkCanvas的内容时遇到问题。在调试模式下,它完美地运行。在发布模式下,我无法保存。
默认情况下发布编译使用.Net Native。因此,与调试模式相比,存在一些不同的行为。
在这种情况下,CardInkCanvas.InkPresenter.StrokeContainer.SaveAsync
和outputStream.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();
}