Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.05;
Скачать: CL | DM;

Вниз

Если два различных Sender a вызывают одно событие   Найти похожие ветки 

 
События   (2002-11-27 13:33) [0]

Если одновременно два различных Sender"a вызывают одно событие, будет ли вызвана вторая его копия, или то, которое было вызвано первым прервется или как?


 
MBo ©   (2002-11-27 13:37) [1]

Одновременно не бывает.
Ни копии, ни прерывания - по завершению одного вызовется другое


 
Digitman ©   (2002-11-27 13:38) [2]

никаких прерываний - процедура-обработчик в любом случае выполняется до конца, так , как это предусмотрено ее логикой


 
События   (2002-11-27 13:40) [3]

Например событие вызывается по сигналу с com-port"a.
Таких сигналов может прийти очень много с большой скоростью.
Что будет с теми, кот. не успевают оюрабатываться?


 
down   (2002-11-27 13:44) [4]

Смотпря как их обрабатывать, можно складывать в очередь, а можно пропускать.


 
Digitman ©   (2002-11-27 13:45) [5]


> по сигналу с com-port"a.


Это как ? Компонент что ли какой-то вызывает событие ? Пример кода приводи.


 
События   (2002-11-27 13:46) [6]

А как в очередь складывать, ты имеешь ввиду структуру очередь (FIFO)?


 
Ihor Osov'yak ©   (2002-11-27 13:47) [7]

Что такое копия в вашем понимании?

Обработчик - обычный метод, который может быть вызван повторно
через неявную рекурсию. Также очень просто нарватся при не совсем осознаном использовании Application.ProcessMessages в коде обработчика.
Повторный вызов обработчика (в смысле, что в стеке вызовов выше уже есть вызов этого обработчика) никак не влияет на "прерывание" стоящего выше.

Зы. А я еще молчу про многопоточность ....
Зы2. То, что в неких кругах и литературе обработчики делфийских компонент зовутся событиями вносит очень большую путаницу в неокрепшие умы юных кодеров. Но это имхо ...








 
События   (2002-11-27 13:49) [8]

Народ, мне сейчас уходить нужно, вернусь, объязательно продолжу эту ветку, оказывается все так интересно..


 
Ihor Osov'yak ©   (2002-11-27 13:50) [9]

2 MBo © (27.11.02 13:37)

У меня подозрение, что вопрошающий не очень то понимает термины
"событие","прерывание" и т.п.


 
MBo ©   (2002-11-27 13:58) [10]

>Ihor Osov"yak
Исходя из слова Sender" - я решил, что имеются в виду обработчики


 
Ihor Osov'yak ©   (2002-11-27 14:14) [11]

2 MBo © (27.11.02 13:58) - дык я тоже так решил.
Но тогда Ваш ответ не очень корректен.
Пример (дебильный,даже можно привести аргумент, что пример как не надо в большинстве случаев делать, но все же):

По клику на бутончик запускаем некий цикл, который чего-то считает. Долго. Естественно, чтобы форма не тормозила, чел юзает Application.ProcessMessages. В то время, когда еще работает цыкл от первого клика, юзер щелкает на бутон снова (ибо юный талантливый программер его не заблокировал, ну или может и не недо блокировать по логике программы). Обработчик снова будет вызван (хотя в стеке еще висит старий) - слава умелому юзанию Application.ProcessMessages.

Итого - начинает свою работу "второй екземпляр цикла" - даже не соображу как правильно эту ситуацию терминами обозначить, вопрошающий наверно такую ситуацию имел ввиду под термином "копия". Когда он работу закончит - по стеку откатываемся к "первому екземпляру" ...

То есть Ваше утверждение "Ни копии, ни прерывания - по завершению одного вызовется другое" - как минимум может вопрошающего того немножко обескуражить (неговоря уже о корректности этого высказывания)...



 
MBo ©   (2002-11-27 14:27) [12]

>Ihor Osov"yak
Да, в случае с Application.ProcessMessages (ИМХО, особь статья) это совершенно справедливо. Вот дем. код - надо быстро кликнуть пару раз на кнопку.

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
inc(j);//глобальная интегер
memo1.lines.add("start number "+inttostr(j));
for i:=1 to 1000 do begin
memo1.lines.add(inttostr(i));
application.processmessages;
end;
memo1.lines.add("end number "+inttostr(j));
end;


 
Ihor Osov'yak ©   (2002-11-27 14:32) [13]

2 MBo © (27.11.02 14:27)
(ИМХО, особь статья)
Ох, блин, особь стать... Сори за эмоции, не удержался...

С уважением, Ihor



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

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

Наверх




Память: 0.49 MB
Время: 0.016 c
8-14685
Aleshka
2002-08-16 20:54
2002.12.05
Может кто знает как перевести HSV->RGB


4-14882
Igor_thief
2002-10-20 18:30
2002.12.05
Как в ListView нарисовать картику в subitems?


3-14474
SeRZh
2002-11-19 12:23
2002.12.05
Вопрос новичка


14-14821
vic_774N
2002-11-16 09:36
2002.12.05
Уважаемые мастера и другие


14-14781
[NIKEL]
2002-11-14 21:44
2002.12.05
У кого есть желание потестировать?