Разрешение перерывов пользователя в длительных операциях

Область применения: Excel 2013 | Office 2013 | Visual Studio

Хотя Windows использует устроительный многозадачность, когда выполнение функций или команд может занять много времени, не стоит уступать некоторое время операционной системе, чтобы помочь ей планировать одновременно выполняемые задачи. С помощью Windows вызовов можно сделать это с помощью функции сна. С помощью API C вы можете сделать это с помощью функции xlAbort,которая не только дает процессор на мгновение, но и проверяет, нажал ли пользователь клавишу отмены, ESC.

Поэтому функция xlAbort позволяет коду проверить, хочет ли пользователь закончить процесс, сделать необходимую очистку, а затем вернуть управление Excel. Функция также позволяет очистить условие перерыва. Это позволяет командам отображать диалоговое окно, чтобы проверить, хочет ли пользователь закончить команду. Если пользователь не хочет закончить команду, вызов функции xlAbort с аргументом FALSE снимет разрыв. (Аргумент по умолчанию true , который просто проверяет условие, но не очищает его.)

Функцию xlAbort можно вызвать из пользовательской функции (UDF) или из команды XLL. В UDF, когда функция xlAbort возвращает TRUE, обнаружив перерыв пользователя, обычно вы пресекать вычисление функции и возвращать некоторое значение, чтобы указать, что вычисление не завершено, возможно, ошибка или ноль. Условие перерыва не будет очищаться, чтобы другие экземпляры длительных функций, которые также проверяли это условие, также нарушались. Excel неявно очищает это условие после окончания пересчета.

При обнаружении условия перерыва в команде обычно очищается условие путем вызова функции xlAbort снова с аргументом FALSE, хотя Excel неявно очищает это условие, когда команда заканчивается.

Дополнительные ресурсы

Функции API C, которые можно вызывать только из библиотеки DLL или XLL
Многопоточный пересчет в Excel
Разработка XLL-файлов для Excel
Доступ к дескрипторам основного окна и экземпляра Excel