如何中断使用 Mako SDK 编写程序集?

How do I interrupt writing an assembly using the Mako SDK?

我正在使用 Mako SDK 编写程序集。我正在使用 IPDFOutputwriteAssembly(...) 方法,但我不知道如何取消编写程序集,如果它是一个又大又长的 运行 文件。

我知道我可以提供 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);