Event handler прерывается следующим событием
От: Ja66y  
Дата: 14.08.07 15:06
Оценка:
У меня есть usercontrol, в котором есть обработчик события MouseDown причем довольно объемный. Проблема в том что если достаточно быстро дважды кликнуть мышью, причем можно даже в разных местах обработка первого нажатия прерывается обработкой второго. Быть может кто нибудь сталкивался с таким поведением, нормально ли это, если нет, то как это исправить.
Re: Event handler прерывается следующим событием
От: TK Лес кывт.рф
Дата: 14.08.07 15:09
Оценка: +2
Здравствуйте, Ja66y, Вы писали:

J>У меня есть usercontrol, в котором есть обработчик события MouseDown причем довольно объемный. Проблема в том что если достаточно быстро дважды кликнуть мышью, причем можно даже в разных местах обработка первого нажатия прерывается обработкой второго. Быть может кто нибудь сталкивался с таким поведением, нормально ли это, если нет, то как это исправить.


Где-то во время обработки события запускается цикл выборки сообщений. Поэтому, получается начать обработку второго события. Если выборку сообщений не запускать то, все будет "строго по очереди"
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Event handler прерывается следующим событием
От: Ja66y  
Дата: 14.08.07 16:26
Оценка:
Здравствуйте, TK, Вы писали:
TK>Где-то во время обработки события запускается цикл выборки сообщений. Поэтому, получается начать обработку второго события. Если выборку сообщений не запускать то, все будет "строго по очереди".

Спасибо. А каким образом в .Net запускается этот цикл?
Re[3]: Event handler прерывается следующим событием
От: Lloyd Россия  
Дата: 14.08.07 16:31
Оценка:
Здравствуйте, Ja66y, Вы писали:

J>Спасибо. А каким образом в .Net запускается этот цикл?


Application.DoEvents
Re[3]: Event handler прерывается следующим событием
От: TK Лес кывт.рф
Дата: 14.08.07 17:28
Оценка: +1
Здравствуйте, Ja66y, Вы писали:

J>Спасибо. А каким образом в .Net запускается этот цикл?


Способов много и Application.DoEvents это один из них. Лучше все будет посмотреть что именно было использовано по StackTrace для второго обработчика
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Event handler прерывается следующим событием
От: DNTester Россия  
Дата: 16.08.07 06:52
Оценка:
Здравствуйте, Ja66y, Вы писали:

J>У меня есть usercontrol, в котором есть обработчик события MouseDown причем довольно объемный. Проблема в том что если достаточно быстро дважды кликнуть мышью, причем можно даже в разных местах обработка первого нажатия прерывается обработкой второго. Быть может кто нибудь сталкивался с таким поведением, нормально ли это, если нет, то как это исправить.


Можно повесить Mutex в память до конца обработки первого хандлера, при этом в случае нахождения Мутекса в памяти в начале обработчика просто подавить событие и прервать обработку.
2b|!2b
Re: Event handler прерывается следующим событием
От: Ja66y  
Дата: 13.09.07 11:13
Оценка:
Всем спасибо, проблема разрешилась. Как оказалось DoEvents живет в Splitter'e кто бы только мог подумать.
Вот статья на эту тему http://blogs.msdn.com/carlosag/archive/2005/11/09/TheEvilWinFormsSplitter.aspx
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.