Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.31;
Скачать: CL | DM;

Вниз

прерывание выполнения большой функции   Найти похожие ветки 

 
td   (2004-10-19 21:35) [0]

В программе есть функция по экспорту всех данных в ворд.
И занимает она довольно продолжительное время - порядка часа или больше.

В общем, столкнулся с тем, что пользователи ее вызывают из любопытства, а ждать надоедает - и выходят конрол-альт-дел, потому что во время создания отчета программа ни на что не реагирует - только градусник бежит.

Хочу сделать кнопку "Прервать". С помощью чего это можно организовать?


 
Constantin   (2004-10-19 21:39) [1]

Прерывание подобное Ctrl-Alt-Delete вообще какое -либо прерывание с высоким приоритетом наверно надо сделать


 
SergP ©   (2004-10-19 21:52) [2]

Если ничего хорошего не подскажут, то попробуй так:
Делаешь переменную boolean, в самом начале своей функции пишешь туда например false, а в обработчике нажатия кнопки "Прервать" присваиваешь этой переменной true.

В самой функции постоянно проверяешь значение этой переменной и если вдруг что то выходишь...
Естественно такое лучще делать если твоя функция представляет из себя в основном цикл. Только если функция работает не в отдельном потоке,  придется вставить туда Application.ProcessMessages

А лучше всего запускай функцию в отдельном потоке, тогда все вышеперечисленное не понадобится....


 
Piter ©   (2004-10-19 23:18) [3]

Самое грамотное решение будет таковым:

делать функцию экспорта в отдельном потоке, при нажатии "Прервать" потоку просто делается Terminate.
В самой функции экспорта небось есть какой-то цикл, который выводит серию данных, так в этом цикле при каждой итерации проверять значение переменной Terminated (или как там ее). Если она True - значит, закругляемся.



Страницы: 1 вся ветка

Текущий архив: 2004.10.31;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.028 c
3-1096739539
Сергей Бастрыгин
2004-10-02 21:52
2004.10.31
Сменить тип поля вместо CHAR на VARCHAR


4-1095987259
thoth
2004-09-24 04:54
2004.10.31
Проблема с winexec и несколькими задачами


1-1098198225
ROM
2004-10-19 19:03
2004.10.31
циклическая обработка нажатия кнопки


6-1093371499
Луарвик
2004-08-24 22:18
2004.10.31
IdHTTP: Метод Post: че-то с кодировкой?


3-1096325902
Mizanthrope
2004-09-28 02:58
2004.10.31
Сортировка записей в таблице