【发布时间】:2015-08-15 01:17:47
【问题描述】:
我遵循 MVVM 模式,并且有一个名为 DocumentStore 的模型。该类有一个方法如下:
void DocumentStore::Open_Document(StorageFile^ file) {
create_task(FileIO::ReadTextAsync(file))
.then([this, file](String^ fileContents)
{
// Take the fileContents and add them to internal data structure
});
}
我的 ViewModel 正在弹出一个 FileOpenPicker 以获取一个文件,然后将其作为参数提供给 Open_Document:
create_task(picker->PickSingleFileAsync())
.then([this](StorageFile^ file)
{
m_DocStore->Open_Document(file);
// Target location to do something
}
);
我希望能够在 Open_Document 内部的任务完成后执行操作,即在处理完文件内容之后。
我的模型有没有办法通知任何感兴趣的听众任务已完成?
或者我的模型的Open_Document 方法本身应该是异步的吗?但是,我需要处理任务内部的数据结构,这不会导致我的方法在不同的线程上下文中运行吗?
我正在使用 C++/CX,但我会寻求任何帮助。
【问题讨论】:
-
您是否考虑过将 lambda 传递给
OpenDocument,以便在异步工作完成时调用它?
标签: c++ asynchronous mvvm windows-runtime win-universal-app