C++ 在VC&x2B+;PPL,如何创建同步返回的任务返回方法?

C++ 在VC&x2B+;PPL,如何创建同步返回的任务返回方法?,c++,windows-8,windows-runtime,task-parallel-library,ppl,C++,Windows 8,Windows Runtime,Task Parallel Library,Ppl,考虑以下C#代码: 编译器将其转换为一个任务返回调用,其中如果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)?!

考虑以下C#代码:

编译器将其转换为一个任务返回调用,其中如果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();
}
task DoSomethingAsync()
{
if(muf)
return[[我应该在这里返回什么以便任务完成(.n然后立即调用)?!];
返回DoSomethingInternalAsync();
}

Edit1:在C#中,我可以使用TaskCompletionSource来做同样的事情,但是不使用async关键字-基本上创建一个已完成的任务。

明白了。。这将创建一个空任务:

concurrency::create_task([]{});
另一种方法是。对于
task
方法,可以使用
concurrency::task\u from\u result()
;对于
task
方法,可以使用
concurrency::task\u from\u result(返回值)
。我相信这是Visual Studio 2013的新开端

concurrency::create_task([]{});