Ребята есть пара вопросов, касающихся UE
Понимаю, что такая конструкция бессмысленна, так как UE не зарегистрировано.
Тем не менее при генерации события никакой ошибки не происходит.
Вопросы: Можно ли каким либо образом определить, что созданое событие было зарегестрировано?
Обязательно ли перед завершением работы делать Unregister UE, особенно если их много. Насколько это важно?
Если UE небыло зарегистрировано и в силу моей криворукости, программа продолжает генерировать события в никуда (ошибки то нет) насколько такая ситуация критична?
Ну и последнее, обязательно ли после создания UE перед завершением destroy его? Ведь программа завершается и по сути уже без разницы....
Спасибо.
Вопросы по User Event
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Вопросы по User Event
Странно, что никто не ответил...
А в общем - можете немного поэкспериментировать с подобным кодом: Фишка в том, что если событие не было зарегистрированно - то при генерации память не заполняется (посмотреть можно в Диспетчере задач). Но если есть регистрация - то сгенерированные события уже накапливаются в буффере данных, что чревато переполнением памяти, если не считывать их вовремя.
К слову - в случае с очередью, там все по другому; т.к. ссылка на генерацию/считывание - одна и та же. Если генерировать данные "в пустоту", без Enqueue Element, то само собой, что память будет переполняться.
Боюсь, что нет. Тут нужно тестировать - исполняется ли Ваше сгенерированное событие, или нет; только так Вы определите, было ли оно правильно где-то зарегено.jane_wild писал(а):Вопросы: Можно ли каким либо образом определить, что созданое событие было зарегестрировано?
jane_wild писал(а):Обязательно ли перед завершением работы делать Unregister UE, особенно если их много. Насколько это важно?
Закрывать все открытые ресурсы - это хорошая практика. Поэтому нужно это делать. Однако, Unregister UE - не так критичен, как Destroy UE.jane_wild писал(а):Ну и последнее, обязательно ли после создания UE перед завершением destroy его? Ведь программа завершается и по сути уже без разницы....
А в общем - можете немного поэкспериментировать с подобным кодом: Фишка в том, что если событие не было зарегистрированно - то при генерации память не заполняется (посмотреть можно в Диспетчере задач). Но если есть регистрация - то сгенерированные события уже накапливаются в буффере данных, что чревато переполнением памяти, если не считывать их вовремя.
К слову - в случае с очередью, там все по другому; т.к. ссылка на генерацию/считывание - одна и та же. Если генерировать данные "в пустоту", без Enqueue Element, то само собой, что память будет переполняться.
Мы делили апельсин - много наших полегло...
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Вопросы по User Event
Programmatically Inspect Event Queues
Matt Jacobson | National Instruments | CLA
https://forums.ni.com/t5/You-May-Not-Kn ... -p/3549367
Event Inspector Window - Unhandled Events: "how bad" are they?
https://forums.ni.com/t5/LabVIEW/Event- ... 5#M1028610
Презентация Jack Dunaway - LabVIEW-User-Events-Tips-Tricks-and-Sundry
ftp://LabVIEW_Videos:LabVIEW@frc.tecnov ... Tricks.avi
Инструкция как скачать здесь:
https://lavag.org/topic/17040-niweek-2013-videos/
Сами материалы презентации (на GitHub) удалены (а может куда-то перенесены) автором :(. Ситуация не ясна. Но есть копия
Matt Jacobson | National Instruments | CLA
https://forums.ni.com/t5/You-May-Not-Kn ... -p/3549367
Event Inspector Window - Unhandled Events: "how bad" are they?
https://forums.ni.com/t5/LabVIEW/Event- ... 5#M1028610
Презентация Jack Dunaway - LabVIEW-User-Events-Tips-Tricks-and-Sundry
ftp://LabVIEW_Videos:LabVIEW@frc.tecnov ... Tricks.avi
Инструкция как скачать здесь:
https://lavag.org/topic/17040-niweek-2013-videos/
Сами материалы презентации (на GitHub) удалены (а может куда-то перенесены) автором :(. Ситуация не ясна. Но есть копия
- Вложения
-
- master.zip
- LabVIEW-User-Events-Tips-Tricks-and-Sundry
- (922.06 КБ) 91 скачивание
- jane_wild
- master
- Сообщения: 461
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 84 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Вопросы по User Event
Скачать не получается, пробовала и total comander и упомянутый по ссылке FileZilla - не подключается к серверу FTPПрезентация Jack Dunaway - LabVIEW-User-Events-Tips-Tricks-and-Sundry
ftp://LabVIEW_Videos:LabVIEW@frc.tecnov ... Tricks.avi
Инструкция как скачать здесь:
https://lavag.org/topic/17040-niweek-2013-videos/
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Вопросы по User Event
Именно готовых для этой цели нет, но в теории такое возможно, т.к. почти все механизмы синхронизации построены на оккьюренсах (это внутри прописано, ессно), и по логике вещей регистрация события означает присоединение обработчика событий к экземпляру события (ну, то есть, жёлтая эвент-структура после регистрации UE будет способна обрабатывать событие указанного типа с указанным именем и никакое иное, если оно не будет так же зарегистрировано). Однако, насколько я знаю, простых способов узнать о регистрации, кроме как отловить событие в структуре, нет.jane_wild писал(а):Вопросы: Можно ли каким либо образом определить, что созданое событие было зарегестрировано?
Как упоминалось выше, это правило хорошего стиля или тона в программировании. Однако если вы не сделаете unregister, ничего страшного не случится. Просто обработчик событий будет присоединён к указанному событию и будет готов обрабатывать события (даже при отсутствующей жёлтой эвент-структуре или когда программа вышла из неё). На моей памяти была такая программа, где вообще был пропущен unregister, но программа использовалась несколько лет, пока не была переписана по всем правилам хорошего тона. Я ни разу не наблюдал каких-то сбоев именно из-за отсутствия unregister, но стоит заметить, что сразу после выхода из структуры шёл destroy, а он неявно должен делать unregister для финализации обьектов.jane_wild писал(а):Обязательно ли перед завершением работы делать Unregister UE, особенно если их много. Насколько это важно?
Это уже от вашей программы зависит. Что будет, если какая-то часть программы не получит событие? Насколько это критично для программы? Если не особо, то можно не париться. Но не лучше ли сразу зарегистрировать все необходимые события сразу после их создания, например при инициализации программы?.. Тогда и не придётся гадать, а зарегистрировано ли событие.jane_wild писал(а):Если UE небыло зарегистрировано и в силу моей криворукости, программа продолжает генерировать события в никуда (ошибки то нет) насколько такая ситуация критична?
Желательно. Ведь уничтожаете же очереди, уведомители и т.п.? Так и здесь. На каждое событие выделяется внутренняя структура в памяти. При регистрации структуре назначается собственный обработчик. Всё это хозяйство нужно удалить при завершении программы. Так что destroy лишним точно не будет. В противном случае у вас появится утечка памяти в 8 или более байтов на каждой итерации (запуске) программы. Конечно, если речь о работе в exe, то destroy можно пренебречь, т.к. при выгрузке программы все объекты будут финализированы. Но в IDE лучше придерживаться рекомендаций.jane_wild писал(а):Ну и последнее, обязательно ли после создания UE перед завершением destroy его? Ведь программа завершается и по сути уже без разницы....
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение