Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

"Замерзание" окна. Помогите с потоками.

6.8K
17 января 2005 года
L0phtStar
20 / / 25.12.2004
Приветствую.

Задача: есть программа работающая с базами данных, выполняющая много долгих транзакций (в среднем от 15 до 60 секунд) на протяжении этого времени форма приложения «замерзает» и временами не успевает перерисовывать некоторые элементы окна, что создает для пользователя ощущение «зависания», с которым он частенько расправляется доступными в ОС средствами...

Вопрос: Как бы сделать так, чтобы на время выполнения транзакции выводить небольшое окошко с какой-нибудь лабудой, показывающей что программа работает, но окошко – модальное (т.е. чтобы пока оно не закроется юзер не мог ничего ткнуть в основной форме)? Хотелось бы что-то простое и рациональное, код типа

[Подготовка транзакции]

Form->Show();

[транзакция]

Form->Close();

Использовать метод ShowModal() как я понял нельзя, т.к. в этом случае программа ждет закрытия формы, а переносить функциональность [транзакции] в модальную форму не хочется, т.к. транзакций много, а форма для них нужна только одна и выдирать теперь участки кода из разных частей и переносить их в нее лень... 

Есть идеи? Может кто чего другое подскажет по управлению экраном в таких ситуациях? Прибегать к усложнению типа создания Threads тоже не хотелось бы.

Заранее благодарен за любые дельные советы.
10
17 января 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by L0phtStar
Есть идеи? Может кто чего другое подскажет по управлению экраном в таких ситуациях? Прибегать к усложнению типа создания Threads тоже не хотелось бы.


Без потоков не получится. Разве только выводить что-нить статическое. Если же картинка должна двигаться, транзакция должна выполняться в другом потоке, т. к. иначе выполнение транзакции блокирует основной поток программы.

Можешь попробовать саботажный вариант - создать форму с анимированным GIF или каким-нить TAnimate, которая будет насильно возвращать на себя фокус при малейшей попытке пользователя перейти куда-нить вне нее. Только уверен, что картинка двигаться не будет.

Кстати, что за база, что за компоненты?

6.8K
17 января 2005 года
L0phtStar
20 / / 25.12.2004
Цитата:
Originally posted by smartsoft

Без потоков не получится. Разве только выводить что-нить статическое. ..........
Кстати, что за база, что за компоненты?



эх... :( похоже придется с потоками мучится

База ms sql 7, интерфейс ADO

259
18 января 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by L0phtStar


эх... :( похоже придется с потоками мучится

База ms sql 7, интерфейс ADO


Можно еще какой нибудь gif анимированный вывести.

499
19 января 2005 года
madjahed
149 / / 14.01.2004
Цитата:
Originally posted by L0phtStar


эх... :( похоже придется с потоками мучится

База ms sql 7, интерфейс ADO



А чё с инми мучиться ??? Посмотри документацию - для основной (запуск, остановка)роботы с потоками используеться пара функций !

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог