提问人:mynameisroh 提问时间:2/6/2023 最后编辑:mynameisroh 更新时间:2/6/2023 访问量:70
使用 C++/WinRT 将 InMemoryRandomAccessStream 的内容读入缓冲区
Reading content of a InMemoryRandomAccessStream into a Buffer using C++/WinRT
问:
我正在尝试序列化 .Microsoft提供了非常方便的ISF格式来执行此操作。
现在,我想将 InkStrokeContainer 的内容存储到一个对象中,如下所示:winrt::Windows::UI::Input::Inking::InkStrokeContainer
winrt::Windows::Storage::Streams::Buffer
// This code is running in a worker thread
using namespace winrt::Windows::Foundation;
using namespace winrt::Windows::UI::Input;
using namespace winrt::Windows::UI::Input::Inking;
using namespace winrt::Windows::Storage::Streams;
InkStrokeContainer inkContainer;
// Add some strokes to the inkContainer
InMemoryRandomAccessStream stream;
inkContainer.SaveAsync(stream, InkPersistenceFormat::Isf).get();
Buffer buffer(stream.Size());
stream.ReadAsync(buffer, buffer.Capacity(), InputStreamOptions::None).get();
std::cout << "Buffer size: " << buffer.Length() << "Stream size: " << stream.Size() << std::endl;
但是,此代码不起作用,最后一行的输出始终为:
缓冲区大小:0 流大小:1102
似乎没有任何东西被写入缓冲区,我无法弄清楚为什么。
答: 暂无答案
评论
ReadAsync
是一种异步方法。请尝试使用 co_await 关键字等待它完成。co_await
co_await