В VC ++ PPL как создать метод, возвращающий задачи, который возвращает синхронно?

Рассмотрим следующий код C #:

async Task DoSomethingAsync()
{
if (m_f)
return;
await DoSomethingInternalAsync();
}

Компилятор превращает это в вызов, возвращающий задачу, где, если m_f имеет значение true, задача завершается немедленно, а если нет, он «делегирует» асинхронную операцию DoSomethingInternalAsync ().

Теперь, как мне сделать это в C ++? Код должен выглядеть примерно так:

task<void> DoSomethingAsync()
{
if (m_f)
return [[What do I return here so the task is complete (.then called immediately)?!]];
return DoSomethingInternalAsync();
}

Edit1: в C # я могу использовать TaskCompletionSource<> сделать то же самое, но без использования ключевого слова async — по сути, создать завершенную задачу.

3

Решение

Еще один способ сделать это task_from_result. Ты можешь использовать concurrency::task_from_result() за task<void> методы и concurrency::task_from_result(theReturnValue) за task<T> методы. Я считаю, что это новый запуск в Visual Studio 2013.

8

Другие решения

Понял .. Это создаст пустое задание:

concurrency::create_task([]{});
2

По вопросам рекламы [email protected]