jeudi 13 août 2015

UWP/WinRT: How to perform a UI task upon completion of an asynchronous operation in a model?

I'm following the MVVM pattern, and have a model called a DocumentStore. The class has a method as follows:

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
    });
}

My ViewModel is popping up a FileOpenPicker to get a file that it then feed as the argument into Open_Document.

I'd like to be able to perform an action after the task inside of Open_Document has completed, i.e. after the fileContents have been processed.

Is there a way for my Model to notify any interested listeners that a task is complete?

Or should my Model's Open_Document method actually be itself asynchronous? However, I need to process the data structure inside the task, and wouldn't that cause my method to be running inside a different thread context?

I'm working in C++/CX but will take any help I can get.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire