logo search
Литература_1 / photon_old

Фоновое исполнение

Если очень длительная операция не может быть легко разбита на отдельные части, и Вы не хотите использовать несколько потоков, Вы должны по меньшей мере вызвать функцию PtBkgdHandlerProcess() для обработки событий Photon'а, так чтобы графический интерфейс пользователя не выглядел бы замороженным.

Если операция ну очень длительная, Вы можете вызвать PtBkgdHandlerProcess() внутри петли. Как часто Вам надо вызывать функцию PtBkgdHandlerProcess(), зависит от того, что делает Ваше приложение. Вы должны также найти способ, позволяющий пользователю знать, в каком состоянии ход исполнения операции.

Например, если Вы читаете большую директорию, Вы можете вызывать фоновый обработчик после чтения нескольких файлов. Если Вы открываете и обрабатываете каждый файл в директории, Вы должны вызывать PtBkgdHandlerProcess() после каждого файла.

 Безопасным является вызов функции PtBkgdHandlerProcess() в ответных реакциях, рабочих процедурах и процедурах ввода, но отнюдь не в "Draw"-методе виджета (см. книгу "Проектирование своих виджетов" или в функции прорисовки PtRaw).

Если ответная реакция вызывает функцию PtBkgdHandlerProcess(), будьте осторожны, если можете вызвать ответную реакцию одновременно несколько раз. Если Вы не хотите обрабатывать эту рекурсию, то должны блокировать виджет(ы), связанный(ые) с ответной реакцией.

События Photon'а обрабатываются следующими функциями: