Как и в вопросе, возможно ли преобразование между Windows :: Foundation :: IAsyncOperation и Concurrency :: task?
Если да, то как это сделать?
Обновить 1.
Я перехожу с C ++ / CX на C ++ / winrt, и у меня есть следующий конструктор в коде C ++ / CX:
XamlComponentConstructor:XamlComponentConstructor()
{
InitializeComponent();
Uri^ uri = ref new Uri(L"URI");
create_task(StorageFile::GetFileFromApplicationUriAsync(uri))
.then([this](StorageFile^ file)
{
return Windows::Storage::FileIO::ReadTextAsync(file);
})
.then([this](Platform::String^ text)
{
// Text processing
x_firstTextBox->Text = var1;
x_secondTextBox->Text = var2;
})
}
Основная проблема в том, что нет возможности использовать корутины в конструкторе класса. Таким образом, следующий код не работает:
XamlComponentConstructor:XamlComponentConstructor()
{
InitializeComponent();
const auto uri = winrt::Uri(L"URI");
const auto file { co_await StorageFile::GetFileFromApplicationUriAsync(uri) };
const auto text { co_await winrt::FileIO::ReadTextAsync(file) };
//Text processing
x_firstTextBox->Text = var1;
x_secondTextBox->Text = var2;
}
Вы знаете, как изменить этот код, чтобы он работал?