![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Философский вопрос
Labert © (2002-12-29 20:20:00)Я не знаю, как устроена Windows изнутри, поэтому вопрос тупой.
Вопрос про "событийно управляемое" программирование.
Как я понимаю, под Win программа работает так:
программа ждет событий - получает сообщение о событии - вызывается обработчик.
Если мы явным образом не создаем другие потоки, то поток (thread) один.
Далее.
Предположим, два события происходит почти одновременно (или одновременно). Т.е. обработка одного события еще не завершена, а
нужно обрабатывать другое. Вопрос: как в этом случае работает программа?
Конкретный пример:
Идет обработка события от таймера, и тут просходит событие типа OnClick. Или, например, еще одно событие от таймера.
А вот еще ситуевина:
предположим, идет обработка события от таймера:
procedure OnTimer(Sender:TObject);
begin
....
SomeObject.Method1;
....
SomeObject.Method2;
....
end;
И в это время происходит другое событие, например, по кнопке кликнули:
procedure OnClick(Sender:TObject);
begin
...
SomeObject.Free
...
end;
Не будет ли тут Run time ошибки?
вот такой вот вопрос.
прошу прощения за многословность.
Fantasist (2002-12-30 21:36:00) [1]
> Если только это не асинхронное событие :)
Асинхронные события помещаются в очередь асинхронных сообщений. ;)
Sha (2002-12-30 20:02:00) [2]2Alex Konshin (30.12.02 19:45)
Согласен.
Alex Konshin (2002-12-30 19:45:00) [3]2 Sha: Это не противоречит тому, что я написал. Я и сам могу кого хочешь научить. Я могу обрабатывать события и не последовательно.
Для этого конкретного вопроса моего ответа вполне достаточно.
Вопрос был про "событийно управляемое" программирование, ответ был именно на этот вопрос.
Нет смысла толкать Теорию Относительности, если ученик еще не освоил обычную физику.
F1 (2002-12-30 12:18:00) [4]Если Application.ProcessMessages не ставить то все будет намано!
Sha (2002-12-30 10:49:00) [5]2 Alex Konshin (29.12.02 20:37)
События начинаютобрабатываться последовательно.
Обработка более раннего события не обязательно заканчивается до начала обработки следующего.
gsu (2002-12-30 10:46:00) [6](-:|~
В. И. Ленин (2002-12-30 10:43:00) [7]Учиться, учиться, учиться...
Внук (2002-12-30 09:31:00) [8]>>Alex Konshin (29.12.02 20:37)
Если только это не асинхронное событие :)
Keymaster (2002-12-30 02:17:00) [9]
> Kotka ©
Windows успешно совмещает свои глюки с работой на протяжении нескольких лет............
Kotka (2002-12-30 02:01:00) [10]А я думал она только глючит и жрет ресурсы :-)
Alex Konshin (2002-12-29 20:37:00) [11]События ставятся в очередь и обрабатываются последовательно. Этим, собственно, и занимается Windows.