xml — вызов задачи PPL через некоторое время переполнение стека

Я работаю над кроссовером удаленного рабочего теста и я использую Cpp Rest Casablanca.
Мне нужно разобрать файл XML, поэтому я нашел в Google этот парсер XML (кажется, самый быстрый парсер)

https://code.msdn.microsoft.com/XmlLite-XML-node-writer-4472022a/sourcecode?fileId=51211&pathId = 2033671260

Однако мне нужно изменить его, потому что каждый раз, когда у меня есть потенциально блокирующая операция ввода / вывода (например, чтение файла), я должен создать задачу.
Поэтому я пытаюсь преобразовать из этого (просто небольшой кусок кода)

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

что-то вроде этого:

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;

Я на самом деле изучаю PPL и Касабланку, но я не нашел много примеров.
когда я отлаживаю код в первый раз, ReadNodeXML.get () переходит к коду задачи ReadNodeXML, но только один раз, поэтому я не могу читать другие узлы, и он зацикливается.
Может кто-нибудь объяснить, что не так, потому что после прочтения большого количества документов я подозреваю, что полностью переписать код каким-то рекурсивным способом.

1

Решение

Задача ещё не решена.

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

Других решений пока нет …

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