Вниз
Скачать: CL | DM;

Философский вопрос   Найти похожие ветки 

 
Labert   (2002-12-29 20:20) [0]

Я не знаю, как устроена Windows изнутри, поэтому вопрос тупой.

Вопрос про "событийно управляемое" программирование.

Как я понимаю, под Win программа работает так:
программа ждет событий - получает сообщение о событии - вызывается обработчик.

Если мы явным образом не создаем другие потоки, то поток (thread) один.

Далее.

Предположим, два события происходит почти одновременно (или одновременно). Т.е. обработка одного события еще не завершена, а
нужно обрабатывать другое. Вопрос: как в этом случае работает программа?

Конкретный пример:

Идет обработка события от таймера, и тут просходит событие типа OnClick. Или, например, еще одно событие от таймера.

А вот еще ситуевина:
предположим, идет обработка события от таймера:

procedure OnTimer(Sender:TObject);
begin
....
SomeObject.Method1;
....
SomeObject.Method2;
....
end;

И в это время происходит другое событие, например, по кнопке кликнули:

procedure OnClick(Sender:TObject);
begin
...
SomeObject.Free
...
end;

Не будет ли тут Run time ошибки?

вот такой вот вопрос.

прошу прощения за многословность.


 
Alex Konshin   (2002-12-29 20:37) [1]

События ставятся в очередь и обрабатываются последовательно. Этим, собственно, и занимается Windows.


 
Kotka ©   (2002-12-30 02:01) [2]

А я думал она только глючит и жрет ресурсы :-)


 
Keymaster ©   (2002-12-30 02:17) [3]


> Kotka ©

Windows успешно совмещает свои глюки с работой на протяжении нескольких лет............


 
Внук ©   (2002-12-30 09:31) [4]

>>Alex Konshin (29.12.02 20:37)
Если только это не асинхронное событие :)


 
В. И. Ленин   (2002-12-30 10:43) [5]

Учиться, учиться, учиться...


 
gsu ©   (2002-12-30 10:46) [6]

(-:|~


 
Sha ©   (2002-12-30 10:49) [7]

2 Alex Konshin (29.12.02 20:37)

События начинают обрабатываться последовательно.
Обработка более раннего события не обязательно заканчивается до начала обработки следующего.


 
F1 ©   (2002-12-30 12:18) [8]

Если Application.ProcessMessages не ставить то все будет намано!


 
Alex Konshin   (2002-12-30 19:45) [9]

2 Sha: Это не противоречит тому, что я написал. Я и сам могу кого хочешь научить. Я могу обрабатывать события и не последовательно.
Для этого конкретного вопроса моего ответа вполне достаточно.
Вопрос был про "событийно управляемое" программирование, ответ был именно на этот вопрос.
Нет смысла толкать Теорию Относительности, если ученик еще не освоил обычную физику.


 
Sha ©   (2002-12-30 20:02) [10]

2Alex Konshin (30.12.02 19:45)

Согласен.


 
Fantasist ©   (2002-12-30 21:36) [11]


> Если только это не асинхронное событие :)


Асинхронные события помещаются в очередь асинхронных сообщений. ;)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.012 c
14-37318
Шишкин Илья
2002-12-21 21:36
2003.01.13
Как заработать денег в Инете?


4-37476
Alex Bogdanov
2002-11-28 03:26
2003.01.13
WinExec


3-36988
Сергей
2002-12-18 17:04
2003.01.13
SQL


4-37455
Maksss
2002-11-18 03:39
2003.01.13
Создание контролов


14-37290
michael_b
2002-12-20 20:08
2003.01.13
Сложная задача по Pascal




   Наверх