Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 一段时间内的PPL任务调用C++;_C++_Xml_Visual Studio 2013_Ppl_Cpprest Sdk - Fatal编程技术网

C++ 一段时间内的PPL任务调用C++;

C++ 一段时间内的PPL任务调用C++;,c++,xml,visual-studio-2013,ppl,cpprest-sdk,C++,Xml,Visual Studio 2013,Ppl,Cpprest Sdk,我正在进行交叉远程工作测试,我使用Cpp Rest卡萨布兰卡。 我需要解析一个XML文件,所以我在google上找到了这个XML解析器(它似乎是最快的解析器) 然而,我需要改变它,因为每次我有一个潜在的阻塞i/O操作(比如读取文件),我都必须创建一个任务。 因此,我尝试从中转换(只是一段小代码) 对这样的事情: task<HRESULT> ReadNodeXML([&]() { return pReader->Read(&nodeType); });

我正在进行交叉远程工作测试,我使用Cpp Rest卡萨布兰卡。 我需要解析一个XML文件,所以我在google上找到了这个XML解析器(它似乎是最快的解析器)

然而,我需要改变它,因为每次我有一个潜在的阻塞i/O操作(比如读取文件),我都必须创建一个任务。 因此,我尝试从中转换(只是一段小代码)

对这样的事情:

task<HRESULT> ReadNodeXML([&]()
{
    return pReader->Read(&nodeType);
});

//read until there are no more nodes
while (S_OK == (hr = ReadNodeXML.get()))
//while (S_OK == (hr = pReader->Read(&nodeType)))
{
    switch (nodeType)
    {
    case XmlNodeType_XmlDeclaration:
        wprintf(L"XmlDeclaration\n");
        if (S_OK != pReader->MoveToNextAttribute()) 
            break;
task ReadNodeXML([&]()
{
返回预订单->读取(&nodeType);
});
//读取,直到没有更多节点为止
而(S_OK==(hr=ReadNodeXML.get())
//而(S_OK==(hr=pReader->Read(&nodeType)))
{
开关(节点类型)
{
案例XmlNodeType\u XmlDeclaration:
wprintf(L“XmlDeclaration”);
如果(S_OK!=pReader->MoveToNextAttribute())
打破
我实际上在研究PPL和卡萨布兰卡,但我没有找到很多例子。 当我第一次调试代码时,ReadNodeXML.get()跳转到ReadNodeXML任务代码,但只有一次,因此我无法读取其他节点和它的循环。 有人能解释一下什么是错误的,因为在阅读了大量的文档之后,我怀疑以一种递归的方式完全重写了代码

task<HRESULT> ReadNodeXML([&]()
{
    return pReader->Read(&nodeType);
});

//read until there are no more nodes
while (S_OK == (hr = ReadNodeXML.get()))
//while (S_OK == (hr = pReader->Read(&nodeType)))
{
    switch (nodeType)
    {
    case XmlNodeType_XmlDeclaration:
        wprintf(L"XmlDeclaration\n");
        if (S_OK != pReader->MoveToNextAttribute()) 
            break;