Windows 8 你什么时候工作?

Windows 8 你什么时候工作?,windows-8,c++-cx,ppl,Windows 8,C++ Cx,Ppl,我有一个std::vector,其中有一个任务列表,可以按顺序加载,也可以不按顺序加载。我遇到了concurrency::when_调用,但不知道如何使用它 我遇到了使用调用ScenarioInput1.xaml.cpp:100的,但我不理解pair参数,以及如何使其适应我的返回值 编辑:我想做的是: struct TaskInfo { unsigned int uniqueId; concurrency::task<unsigned int&

我有一个std::vector,其中有一个任务列表,可以按顺序加载,也可以不按顺序加载。我遇到了concurrency::when_调用,但不知道如何使用它

我遇到了使用调用ScenarioInput1.xaml.cpp:100的,但我不理解pair参数,以及如何使其适应我的返回值

编辑:我想做的是:

struct TaskInfo {
  unsigned int                    uniqueId;
  concurrency::task<unsigned int> task;
};
typedef std::vector< TaskInfo > TaskList;
typedef std::vector< unsigned int > TaskReturns;


// Somewhere inside a class, tasks and finished are member variable.
TaskList tasks;
bool finished = false;

// Inside a member function of the same class as above
// Populate the tasks

concurrency::when_any( tasks.begin(), tasks.end() ).then([this](std::vector<unsigned int> ids){
  for( std::vector<unsigned int>::iterator list=ids.begin; list != ids.end(); ++ids ) {
    // a mutex lock would happen here
    for( TaskList::iterator allTasks = tasks.begin(); allTasks != tasks.end(); ++allTasks ) {
      if ( *list == allTasks->uniqueId ) { tasks.erase( allTasks ); break; }
    }
    // mutex unlock
    if ( tasks.size() == 0 ) { finished = true; break }
  }
}

// In another member function
if ( finished ) doOtherThings();

如果我想做的事情没有经过深思熟虑或效率不高,请告诉我。

这是任务的最佳组合。你有一个延续,一个连接当你所有和选择当你任何

创建一个任务,当任何任务 作为参数提供成功完成

有关更多详细信息,请参阅和

例如:

任务任务[]={t1,t2,t3}; 自动任务结果=所有开始任务、结束任务时 .然后[]std::向量结果{ …相当于

t1&&t2&&t3。然后 鉴于

任务任务[]={t1,t2,t3}; 自动任务结果=任何开始任务、结束任务时 .then[]字符串结果{ …相当于

t1 | | t2 | | t3.然后
这是任务的选择组合。你有一个延续,一个全部加入,一个任意选择

创建一个任务,当任何任务 作为参数提供成功完成

有关更多详细信息,请参阅和

例如:

任务任务[]={t1,t2,t3}; 自动任务结果=所有开始任务、结束任务时 .然后[]std::向量结果{ …相当于

t1&&t2&&t3。然后 鉴于

任务任务[]={t1,t2,t3}; 自动任务结果=任何开始任务、结束任务时 .then[]字符串结果{ …相当于

t1 | | t2 | | t3.然后
Hans Passant提供的信息告诉我,如果有……那么[]需要是std::pair类型。

Hans Passant提供的信息告诉我,如果有……那么[]需要是std::pair类型。

我很困惑,在您引用的文件中我看不到when_any的任何用法。抱歉,似乎下载包和在线源代码略有不同。啊,整理出来了,感谢@hans passant-when_any中的参数…那么应该是std::pair@hans passant,请添加一个答案,我会标记它。谢谢你的链接。在我看来,你可以写一个比我更好的答案。所以继续发布一个,并将其标记为答案。我很困惑,我在你引用的文件中看不到when_any的任何用法。抱歉,似乎下载包和在线源代码略有不同.啊,整理好了,感谢@hans passant-when_any中的参数…那么应该是一个std::pair@hans passant,请添加一个答案,我会标记它。感谢链接。看起来你可以写一个比我更好的答案。所以继续发布一个,并将其标记为答案。在做了一些m在阅读中,它看起来像而不是从你的示例字符串结果作为when_any参数。然后操作,它应该是std::pair result。至少我不是唯一一个困惑的人:在做了更多的阅读后,它看起来像而不是从你的示例字符串结果作为when_any参数。然后操作,它应该是std::配对结果。至少我不是唯一一个困惑的人: