Запрет на повторный запуск
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Запрет на повторный запуск
Запуск довольно "увесистого" приложения происходит со значительной задержкой. В смысле юзер сделал двойной щелчок по иконке, а Frot Panel появилась секунд через 10. Что собственно вводит его в заблуждение и он щелкает еще пару раз, запуская уже запущенное приложение. Далее понятно ошибки и последующий вылет всего, что таким непосильным трудом инициализировалось. Мне видится два пути. Первый - проверка запущено ли уже приложение с данным именем, с последующим запретом на повторный запуск. И второй - показать юзеру окошко типа splashscreen, который даст понять, мол нечего щелкать запущено уже все...
Мне кажется что первый вариант более правильный (а лучше комбинация двух), но я не знаю как проверить на наличие уже запущеной копии, особенно если эта копия запущена в отдельном потоке.
Решила попытаться сделать по второму варианту, но и тут неудача. В прилагаемом примере все работает, а вот в реальном проекте нет. В смысле этот splashscreen появляется буквально на мгновение, все с той же 10-ти секундной задержкой и тутже запускается главное приложение. Почему то происходит ожидание всей инициализации, хотя по идее Frot Panel StartUP.vi должена появится сразу же. Понимаю что я чего то не понимаю. Посмотрите пожалуйста может вложеный проект. Может я чего не правильно делаю? И вообще кто как решает эту проблему. Запрет на повторный запуск уже запущенного приложения. Спасибо
Мне кажется что первый вариант более правильный (а лучше комбинация двух), но я не знаю как проверить на наличие уже запущеной копии, особенно если эта копия запущена в отдельном потоке.
Решила попытаться сделать по второму варианту, но и тут неудача. В прилагаемом примере все работает, а вот в реальном проекте нет. В смысле этот splashscreen появляется буквально на мгновение, все с той же 10-ти секундной задержкой и тутже запускается главное приложение. Почему то происходит ожидание всей инициализации, хотя по идее Frot Panel StartUP.vi должена появится сразу же. Понимаю что я чего то не понимаю. Посмотрите пожалуйста может вложеный проект. Может я чего не правильно делаю? И вообще кто как решает эту проблему. Запрет на повторный запуск уже запущенного приложения. Спасибо
- Вложения
-
- SplashScreen.zip
- (226.47 КБ) 229 скачиваний
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Запрет на повторный запуск
По умолчанию запускается один экземпляр. Это регулируется в ини файле, рядом с экзешником.
Front панель сначала грузит все SubVI, а уже потом запускается. Это заметно на тяжелых приложениях, либо на слабых машинах. Т. е если загрузка происходит больше некоторого времени (секунд десять), то появляется индикаторная панель, которая отображает процесс загрузки VI-ек
Front панель сначала грузит все SubVI, а уже потом запускается. Это заметно на тяжелых приложениях, либо на слабых машинах. Т. е если загрузка происходит больше некоторого времени (секунд десять), то появляется индикаторная панель, которая отображает процесс загрузки VI-ек
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Запрет на повторный запуск
открыла я файл конфигурации и где тут чего отрегулировать, что бы запускался только один экземпляр?
server.app.propertiesEnabled=True
server.tcp.serviceName="My Computer/VI Server"
server.vi.propertiesEnabled=True
WebServer.TcpAccess="c+*"
WebServer.ViAccess="+*"
DebugServerEnabled=False
DebugServerWaitOnLaunch=False
RTTarget.ApplicationPath=C:\Users\Jane\Documents\LabVIEW Data\Remote Development\startup.rtexe
RTTarget.VIPath=C:\Users\Jane\Documents\LabVIEW Data\Remote Development
server.app.propertiesEnabled=True
server.tcp.serviceName="My Computer/VI Server"
server.vi.propertiesEnabled=True
WebServer.TcpAccess="c+*"
WebServer.ViAccess="+*"
DebugServerEnabled=False
DebugServerWaitOnLaunch=False
RTTarget.ApplicationPath=C:\Users\Jane\Documents\LabVIEW Data\Remote Development\startup.rtexe
RTTarget.VIPath=C:\Users\Jane\Documents\LabVIEW Data\Remote Development
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Запрет на повторный запуск
Попробуйте прописать
allowmultipleinstances=False
Взято отсюда:
http://www.labviewportal.org/viewtopic. ... 84&p=17801
allowmultipleinstances=False
Взято отсюда:
http://www.labviewportal.org/viewtopic. ... 84&p=17801
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Запрет на повторный запуск
Можно еще попробовать сделать основным VI- StartUp, а уже из него динамически запускать MainFP.
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Запрет на повторный запуск
Присоединяюсь к идее Borjomy_1 - самый простой, но эффективный выход из ситуации.
Мы делили апельсин - много наших полегло...
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Запрет на повторный запуск
Вы не открываете фронт панель SplashScreen (StartUp.vi). Поэтому в RunTime Вы SplashScreen и не видите. А так все работает правильно.
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Запрет на повторный запуск
Спасибо, это сработало! Повторного запуска не происходит, сколько "не жмякай" по иконке.Borjomy_1 писал(а):Попробуйте прописать
allowmultipleinstances=False
Согласна, но в свойствах Window Appearance StartUp.vi стоит птичка "Show front panel when loaded" Пробовала я метод FP.Open - результат тот же, не срабатывает.Blackman писал(а):Вы не открываете фронт панель SplashScreen (StartUp.vi). Поэтому в RunTime Вы SplashScreen и не видите. А так все работает правильно.
Имеется ввиду в Application Builder на вкладке Source Files в качестве "Startup VIs" указать StartUp.vi ? Естественно Main FP.vi Always Included. Так у меня так и сделано. Посмотрите в приложенном проекте. Или что то другое имеется ввиду под "динамически запускать" ?Borjomy_1 писал(а):Можно еще попробовать сделать основным VI- StartUp, а уже из него динамически запускать MainFP.
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Запрет на повторный запуск
???Согласна, но в свойствах Window Appearance StartUp.vi стоит птичка "Show front panel when loaded"
Убедитесь, что при сборке приложения фронт панель StartUp.vi не удаляется.Пробовала я метод FP.Open - результат тот же, не срабатывает.
Обновите Вашу версию LabVIEW и Runtime Engine. Было несколько исправлений и как минимум один ServicePack.
Upd: Мой Test2016.exe
- jane_wild
- master
- Сообщения: 459
- Зарегистрирован: 30 июн 2016, 02:11
- Версия LabVIEW: 2020
- Благодарил (а): 83 раза
- Поблагодарили: 15 раз
- Контактная информация:
Re: Запрет на повторный запуск
Вы меня не поняли, видимо я плохо объяснила.
Эта цитата из моего первого поста. Создав простенький проект, я показала сам механизм вызова, в верности которого не уверена, может нужно по другому как то делать вызов главного VI, что бы не цеплять все dependences StartUp-ом. Так вот, в этом проекте все работает и выложила я его в LV2013 для доступа к нему большей аудитории. Хотя сама работаю в LV2016. А вот в реальном проекте нет, в смысле заставка не показывается пока все не инициализируется, потом на мгновение выскочит и тут же исчезает поскольку стартует главный VI (и галочка там Show FP стоит). Вот нашла ветку с описанием моей проблемы на буржуйском форуме, решение которой описывается на другой ветке Там в конце есть ссылка на проект, но у меня не установлены какие то тулкиты, потому как половина VI с вопросительными знаками...В прилагаемом примере все работает, а вот в реальном проекте нет
-
- advanced
- Сообщения: 170
- Зарегистрирован: 18 июл 2019, 13:53
- Версия LabVIEW: 2020
- Откуда: Россия, Ижевск
- Благодарил (а): 33 раза
- Контактная информация:
Re: Запрет на повторный запуск
Подниму тему.
Проблема примерно та же - запрет повторного запуска приложения для нетерпеливых (которые не дождались и нажали ещё раз) и для забывчивых (приложение уже запущено, но его не видно и пытаются запустить ещё раз).
Текущее состояние проблемы:
Опция allowmultipleinstances=False установлена по умолчанию (даже если напрямую в ini-файле не прописана), но она распространяется только на запуск из одной папки. Если запуск выполняется из другой папки, то опция не работает (в обоих ini-файлах прописывал, не помогло).
Предполагаю, что можно использовать Shared Variable. Может ещё какие-то варианты есть (интересует именно запрет, анимация здесь не подойдёт)?
Проблема примерно та же - запрет повторного запуска приложения для нетерпеливых (которые не дождались и нажали ещё раз) и для забывчивых (приложение уже запущено, но его не видно и пытаются запустить ещё раз).
Текущее состояние проблемы:
Опция allowmultipleinstances=False установлена по умолчанию (даже если напрямую в ini-файле не прописана), но она распространяется только на запуск из одной папки. Если запуск выполняется из другой папки, то опция не работает (в обоих ini-файлах прописывал, не помогло).
Предполагаю, что можно использовать Shared Variable. Может ещё какие-то варианты есть (интересует именно запрет, анимация здесь не подойдёт)?
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Запрет на повторный запуск
Ну извините, два разных экземпляра exe, запускаемые из разных мест, это не проблема реализации LabView. Это ваши системные ошибки. Почему пользователь вообще может запустить два разных приложения? Вы ему заботливо кладете две иконки рядом? Опять-же, тяжелое приложение это тоже системная ошибка. Грузите необходимый минимум, а остальное по мере необходимости.
-
- advanced
- Сообщения: 170
- Зарегистрирован: 18 июл 2019, 13:53
- Версия LabVIEW: 2020
- Откуда: Россия, Ижевск
- Благодарил (а): 33 раза
- Контактная информация:
Re: Запрет на повторный запуск
Это как раз проблема реализации LabView. Если бы не было конфликтов между одинаковыми приложеними, то и проблем бы не было. Если несколько копий приложения не могут сосуществовать одновременно, то должен быть программный запрет на запуск копий. Иначе это грозит головной болью для техподдержки как минимум. А как максимум - проблемами с оборудованием.
Есть необходимость держать на ПК несколько версий приложения.
P.S. Тестировщики тоже пользователи.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Запрет на повторный запуск
Это обсуждалось тут: Multiple executable instances running without AllowMultipleInstances set in INI file. Но конкретного решения там нет. Надо "костылить" что-то своё, например, через IPC (TCP, NS и т.п.).
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Запрет на повторный запуск
Самое простое - открытие UDP порта. Второе приложение этот-же порт открыть не сможет.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 5 Ответы
- 446 Просмотры
-
Последнее сообщение ujin1