我正在使用ImageMagick将PDF转换为JPG。这个转换需要几百毫秒才能运行,所以我有一个WaitForSingleItem等待进程句柄。WaitForSingleObject信号太快ImageMagick转换
不幸的是,该过程几乎立即完成,并且转换没有完成(我假设它由于句柄被关闭而中断)。我想要同步行为。
我有一个输出管道连接到进程,我根本没有得到任何输出, 错误或其他,因为进程认为“确定,完成,关闭所有东西,继续前进”。
由于操作不太密集,一切都按预期工作 - 错误,输出等 - 我认为问题几乎肯定在等待中。
有人可以提出一个建议如何解决这个问题吗?这里有一些适用的代码,可能不是很有帮助,但它是唯一重要的部分,因为一切正常。
我运行代码后,收到消息WAIT_OBJECT_0
。
if (!CreateProcess(
NULL,
(LPSTR) "convert test.pdf test.jpg",
NULL,
NULL,
TRUE,
CREATE_NO_WINDOW,
NULL,
NULL,
&si,
&pi
)) { console_->AddItem("ERROR: Failed to create process."); }
DWORD wait = WaitForSingleObject(pi.hProcess, INFINITE);
if (wait == WAIT_ABANDONED) { MessageBox(NULL, "WAIT_ABANDONED", "Alert", MB_OK); }
else if (wait == WAIT_OBJECT_0) { MessageBox(NULL, "WAIT_OBJECT_0", "Alert", MB_OK); }
else if (wait == WAIT_TIMEOUT) { MessageBox(NULL, "WAIT_TIMEOUT", "Alert", MB_OK); }
else if (wait == WAIT_FAILED) { MessageBox(NULL, "WAIT_FAILED", "Alert", MB_OK); }
else { MessageBox(NULL, "END OF THE WORLD", "Alert", MB_OK); }
您是否肯定需要花费更长时间“更密集”的命令才能正常工作并且不会出错? – jeremy
是的,我已经在'cmd'中单独测试过了,而且现在我已经在不同的语言中使用过这个命令了。另外,我尝试了其他带有故意错误的“不太密集的”命令,并且他们没有问题就下了管道。 – Ben
GetExitCodeProcess返回什么? – jeremy