Timer и Unload

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Timer и Unload

Сообщение Space » 11.01.2007 (Чт) 2:04

При закрытии формы возникает Unload. У меня есть задержка в таймере 15 сек, интервал вызова таймера = 20 сек. Похоже, ещё работает код в таймере и там идёт обращение к контролам на форме. И снова грузится форма! Присвоение Interval=0 или Enabled=0 таймеру в Form_Unload не прекращает выполнение кода в работающем до этого таймере. Как форму выгрузить нормально? Ждать окончания работы таймера долговато. Установить флаг выгрузки формы и проверять в коде таймера коряво. Вот если бы как-то прекратить выполнение кода в таймере вместе с его выгрузкой?...

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 11.01.2007 (Чт) 2:10

End - радикально.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Re: Timer и Unload

Сообщение GSerg » 11.01.2007 (Чт) 4:32

Space писал(а):Установить флаг выгрузки формы и проверять в коде таймера коряво. Вот если бы как-то прекратить выполнение кода в таймере вместе с его выгрузкой?...

А между тем второе предложение осуществляется именно посредством первого...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Сообщение Space » 11.01.2007 (Чт) 17:27

А если у меня стоит Sleep в таймере? Будет задержка, если обрабатывать через флаги. Не существует никакого способа экстренно прервать выполнение процедуры, кроме END?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 11.01.2007 (Чт) 17:30

Разумеется, существует. Exit Sub, внутри процедуры.
Lasciate ogni speranza, voi ch'entrate.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 11.01.2007 (Чт) 17:34

А если у меня стоит Sleep в таймере?
Sleep заставляет поток, вызвавший ее, "уснуть" на некоторое время. Так что вызов END отложится на какое-то время. Я так понял тебе не просто форму выгрузить, а вообще завершить работу? Единственный выход в данном случае (всмысле моментально завершить работу) - вызвать ExitProcess/TerminateProcess в другом потоке...
А я все практикую лечение травами...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 108

    TopList