Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не всегда приходит оповещение о событиях,установленное через NotifyChangeEventLog

7
06 января 2011 года
@pixo $oft
3.4K / / 20.09.2006
Т.е. иногда всё же приходит,но не на каждое событие почему-то.За некоторый интервал времени я смотрю,что изменилось в журнале событий,и нередко вижу,что там появились новые,но программа не среагировала(раньше просто MessageBox был с сообщением,что появилось новое событие)
ЧЯДНТ?
342
11 января 2011 года
Yos
209 / / 21.06.2003
WaitForSingleObject - надо делать не в цикле обработки очереди сообщений, а в другом потоке этого процесса. Т.е. надо создать дополнительный поток CreateThread и там делать обработку...

А так делать вообще нельзя. Раньше (на заре окон в версиях 3.Х) копии цикла обработки сообщений вставляли в другие части кода, которые выполнялись очень долго. А так как многозадачности не было, то отсутствие такого способа вызывало к подвисанию компа, иногда намертво...
7
11 января 2011 года
@pixo $oft
3.4K / / 20.09.2006
Дело в том,что у меня проблема с отладкой более чем одного потока.Я-то читал про это,но сделал всё же так.Почему надо именно новый поток?
Тут же WFSO не бесконечно ждёт,а миллисекунду формально,поэтому вроде как всё нормально должно быть
342
12 января 2011 года
Yos
209 / / 21.06.2003
Вы в этом уверены? Я нет. Тем более ожидания 1 миллисекунды в принципе не существует (градация идет в разрезе 47, если не ошибаюсь, так что ждать вы будете именно столько)- лучше ставить 0 тогда сразу будет ясно есть "сигнал" или его нет...

И второе - пока идет обработка в Traslate и Dispath состояние Event может несколько раз поменяться - так каое из них вы поймаете?
7
12 января 2011 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: Yos
Вы в этом уверены? Я нет. Тем более ожидания 1 миллисекунды в принципе не существует (градация идет в разрезе 47, если не ошибаюсь, так что ждать вы будете именно столько)- лучше ставить 0 тогда сразу будет ясно есть "сигнал" или его нет...

Я это прекрасно знаю:) Но мне слишком моментальная реакция не нужна;к тому же,когда я ставил 0,программа просто пожирала ресурсы процессора,ибо у меня там PeekMessage же.Поэтому 1 поставил,чтобы совсем не 0 (=

Цитата: Yos
И второе - пока идет обработка в Traslate и Dispath состояние Event может несколько раз поменяться - так каое из них вы поймаете?

Ну,не так уж и долго они обрабатываются…А состояние события меняется не каждый раз,а только после получения 1го события(если я ещё не был о нём уведомлён).Т.е. оно,конечно,устанавливается каждый раз,но мне самое главное–отследить момент появления хотя бы одного нового события.Так что я ловлю последнее

342
13 января 2011 года
Yos
209 / / 21.06.2003
Цитата: @pixo $oft
но не на каждое событие почему-то

Так все же все или последнее...

7
13 января 2011 года
@pixo $oft
3.4K / / 20.09.2006
Ну так там ведь в цикле всё.Поэтому за интервал срабатывания мне достаточно событие поймать,и потом можно до следующего.Т.е. если они пойдут группками,это не страшно
342
14 января 2011 года
Yos
209 / / 21.06.2003
А почему, чисто для отладки и понимания что происходит + проверки моих предположений, не сделать следующее - убрать создание окон и цикл обработки сообщений и сделать цикл который только ловит событие и получает по нему информацию.

В случае если событие есть выводить MessageBox с Ес/Но, по Но - выходить из цикла и приложения соответственно...

PS ЧЯНТД можно поделить на 4 типа - Явные ошибки, Скрытые ошибки, Особенности реализации и мои любимые Темные электрические силы...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог