Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.13;
Скачать: 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 вся ветка

Текущий архив: 2003.01.13;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.009 c
3-36934
widom
2002-12-18 05:28
2003.01.13
Подскажите функцию


3-36979
Che
2002-12-19 00:42
2003.01.13
DataSource.DataSet


1-37006
ivlex
2003-01-01 04:06
2003.01.13
О блокировке заставки


6-37236
Repeater
2002-11-01 12:46
2003.01.13
Можно ли перевести сокет из блокирующего в неблокирующий режим?


4-37423
Zevsus
2002-11-22 13:07
2003.01.13
Убрать чужую иконку из трея





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский