我正在使用Mako SDK编写程序集。我正在使用writeAssembly(...)
的IPDFOutput
方法,但我不知道如何取消编写程序集,如果它是一个大的,长时间运行的文件。
我看到我可以提供ProgressCallbackFunc
,但我不确定如何发出信号要取消。
我怎么能打断大会的写作?
正如您所指出的,对writeAssembly(...)
的调用包括进度回调的参数。从回调中,你可以简单地从那里抛出一个错误来终止中断并结束writeAssembly(...)
调用。
按下ESC时终止的回调函数示例可能如下所示:
static void progressFunc(void *priv, float progress)
{
wprintf(L"Percentage complete: %3.1f%%\r", progress * 100.0);
if (_kbhit())
{
if (_getch() == 27) // ESC;
throwEDLError(EDL_ERR_ABORTED);
}
}
然后writeAssembly(...)
调用如下所示:
output->writeAssembly(assembly, outputFilePath, progressFunc);