Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не отвечает [D7, 95/98, ME, NT4, 2000, XP]


Страницы:   1 2

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].


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо