Как мне прервать написание сборки с помощью Mako SDK? - PullRequest
0 голосов
/ 26 февраля 2019

Я пишу сборку, используя Mako SDK.Я использую writeAssembly(...) метод IPDFOutput, но я не знаю, как отменить запись сборки, если это большой, долго работающий файл.

Я вижу, что могу предоставитьProgressCallbackFunc, но я не уверен, как сигнализировать об отмене записи.

Как мне прервать написание сборки?

1 Ответ

0 голосов
/ 26 февраля 2019

Как вы указали, вызов 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);
...