![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не отвечает [D7, 95/98, ME, NT4, 2000, XP]
hinst © (2007-09-28 16:41:00)Как сделать свою реакцию на <<Приложение не отвечает>>. Спасибо.
Kolan (2007-09-30 09:08:00) [1]> я из детсадовского возраста вышел давно.
Мне показалось наоборот, ладно фиг с ним
homm (2007-09-29 22:41:00) [2]> [30] DVM © (29.09.07 22:16)
> Человек и сам рано или поздно поймет, что он не на верном
> пути.
Человек то поймет, а вот на свете станет на одну кривую программу больше. По твоей вине, между прочим :)
DVM (2007-09-29 22:16:00) [3]
> показать ято я крут
я из детсадовского возраста вышел давно.
> а то что человека можно было направить в нужном напрвлении
> — это фигня
Неудачи они, понимаешь, штука крайне нужная и полезная. Человек и сам рано или поздно поймет, что он не на верном пути.
Kolan (2007-09-29 21:51:00) [4]но решил ответить прямо на первоначальный вопрос, показать ято я крут, а то что человека можно было направить в нужном напрвлении это фигня.
:(
DVM (2007-09-29 21:21:00) [5]
> Не верю что ты не понял о чем он..
Вначале нет, после [4] поста да, но решил ответить прямо на первоначальный вопрос.
Kolan (2007-09-29 17:42:00) [6]
> Это ответ именно на его вопрос. То что он задал вопрос неверно
> - это его проблема
Не верю что ты не понял о чем он..
К тому же "начинающие" - не всегда задают верные вопросы, имхо если видишь, что вопрос не тот надо постараться вывести "на чистую воду"..
DVM (2007-09-29 15:15:00) [7]
> Поздно… чел уже получил ответ :( только ему нужен был другой…
Это ответ именно на его вопрос. То что он задал вопрос неверно - это его проблема, вытягивать из него информацию о его действительной проблеме пустая трата времени.
Kolan (2007-09-29 09:36:00) [8]> Давай разберемся, что происходит в случае твоего «зависания».
Поздно чел уже получил ответ :( только ему нужен был другой
homm (2007-09-28 21:35:00) [9]Давай разберемся, что происходит в случае твоего «зависания».
Есть основной поток приложения, в его окна виндовс направляет сообщения от пользователя и от системы (ввод и перерисовка). Если вдруг по каким-то причинам поток долгое время не выбирает сообщения из очереди, виндовс показывает это приложение как не отвечающее (заметь, не «зависшее»). Есть минимум 2 способа борьбы с такой ситуацией.
1) Выносить все свои вычисления, в процессе которых приложение загружает процессор, в другой поток. Тогда основной поток просто запускает дополнительный с расчетами и продолжает получать сообщения от системы.
2) Т.к. поток сам сообщения обрабатывать не будет, можно его это заставить. Для этого, например, если у тебя идет цикл с большими вычислениями, в нем ставится обработчик сообщенийApplication.ProcessMessages();, прада вставка обработчика сообщений на каждом шагк твоих вычислений может затянуть сами вычисления еще больше, для этого ставят обработчик реже, чем каждый шаг, например так:
for i := 0 to 9999999 do begin
//Твои мега вычисления
step := step +1;
if step = 999 then begin
step := 0;
Application.ProcessMessages();
end;
end;
Kolan (2007-09-28 20:14:00) [10]> Пасибо всем. Теперь зделаю.
Молодец DVM, научил млин :(
Anatoly Podgoretsky (2007-09-28 19:18:00) [11]> hinst (28.09.2007 16:53:11) [11]
это не считается зависшим даже в ХР, вот 20 секунд другое дело, но это не означает зависшие приложение, может надо еще минут 300 подождать, может там супер запрос выполняется
hinst (2007-09-28 17:46:00) [12]Пасибо всем. Теперь зделаю.
Сергей М. (2007-09-28 17:44:00) [13]
> Responding - это чё?
Это "отвечание")
hinst (2007-09-28 17:40:00) [14]Responding - это чё?
DVM (2007-09-28 17:25:00) [15]
> Больше, вроде бы, и тормозить нечему.
Зато есть кому.
umbra (2007-09-28 17:17:00) [16]тормозить могут или длительные расчеты или блокирующий ввод-вывод. Больше, вроде бы, и тормозить нечему.
Сергей М. (2007-09-28 16:58:00) [17]
> я не знаю заранее, какие конкретно функции будут тормозить
А вот это оч плохо.
Kolan (2007-09-28 16:57:00) [18]> Идея хорошая, но я не знаю заранее, какие конкретно функции
> будут тормозить.
Нет, ты это прекрасно знаешь, я в этом уверен Помести всефункции, которые могут тормазить в отд. потоки если потребуется.
Вариант с 2 процессом это в данном случае изврат
hinst (2007-09-28 16:55:00) [19]
> может поместить эти проЧесы в отдельный поток?
Идея хорошая, но я не знаю заранее, какие конкретно функции будут тормозить.
Kolan (2007-09-28 16:54:00) [20]> В течении 10 секунд оно не отвечает на системные сообщения
> и не перерисовывает себя, в ХР в таком случае в заголовок
> окна добавляется (Не отвечает)
Так и думал. См. [10].