Запрет на повторный запуск

Обсуждение, связанное с разработкой ПО верхнего уровня
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Запрет на повторный запуск

Сообщение jane_wild »

Запуск довольно "увесистого" приложения происходит со значительной задержкой. В смысле юзер сделал двойной щелчок по иконке, а Frot Panel появилась секунд через 10. Что собственно вводит его в заблуждение и он щелкает еще пару раз, запуская уже запущенное приложение. Далее понятно ошибки и последующий вылет всего, что таким непосильным трудом инициализировалось. Мне видится два пути. Первый - проверка запущено ли уже приложение с данным именем, с последующим запретом на повторный запуск. И второй - показать юзеру окошко типа splashscreen, который даст понять, мол нечего щелкать запущено уже все...
Мне кажется что первый вариант более правильный (а лучше комбинация двух), но я не знаю как проверить на наличие уже запущеной копии, особенно если эта копия запущена в отдельном потоке.
Решила попытаться сделать по второму варианту, но и тут неудача. В прилагаемом примере все работает, а вот в реальном проекте нет. В смысле этот splashscreen появляется буквально на мгновение, все с той же 10-ти секундной задержкой и тутже запускается главное приложение. Почему то происходит ожидание всей инициализации, хотя по идее Frot Panel StartUP.vi должена появится сразу же. Понимаю что я чего то не понимаю. Посмотрите пожалуйста может вложеный проект. Может я чего не правильно делаю? И вообще кто как решает эту проблему. Запрет на повторный запуск уже запущенного приложения. Спасибо
Вложения
SplashScreen.zip
(226.47 КБ) 226 скачиваний
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Запрет на повторный запуск

Сообщение Borjomy_1 »

По умолчанию запускается один экземпляр. Это регулируется в ини файле, рядом с экзешником.
Front панель сначала грузит все SubVI, а уже потом запускается. Это заметно на тяжелых приложениях, либо на слабых машинах. Т. е если загрузка происходит больше некоторого времени (секунд десять), то появляется индикаторная панель, которая отображает процесс загрузки VI-ек
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Запрет на повторный запуск

Сообщение jane_wild »

открыла я файл конфигурации и где тут чего отрегулировать, что бы запускался только один экземпляр?

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
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Запрет на повторный запуск

Сообщение Borjomy_1 »

Попробуйте прописать
allowmultipleinstances=False

Взято отсюда:
http://www.labviewportal.org/viewtopic. ... 84&p=17801
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Запрет на повторный запуск

Сообщение Borjomy_1 »

Можно еще попробовать сделать основным VI- StartUp, а уже из него динамически запускать MainFP.
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Запрет на повторный запуск

Сообщение Kosist »

Присоединяюсь к идее Borjomy_1 - самый простой, но эффективный выход из ситуации.
Мы делили апельсин - много наших полегло...
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Запрет на повторный запуск

Сообщение Blackman »

Вы не открываете фронт панель SplashScreen (StartUp.vi). Поэтому в RunTime Вы SplashScreen и не видите. А так все работает правильно.
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Запрет на повторный запуск

Сообщение jane_wild »

Borjomy_1 писал(а):Попробуйте прописать
allowmultipleinstances=False
Спасибо, это сработало! Повторного запуска не происходит, сколько "не жмякай" по иконке.
Blackman писал(а):Вы не открываете фронт панель SplashScreen (StartUp.vi). Поэтому в RunTime Вы SplashScreen и не видите. А так все работает правильно.
Согласна, но в свойствах Window Appearance StartUp.vi стоит птичка "Show front panel when loaded" Пробовала я метод FP.Open - результат тот же, не срабатывает.
Borjomy_1 писал(а):Можно еще попробовать сделать основным VI- StartUp, а уже из него динамически запускать MainFP.
Имеется ввиду в Application Builder на вкладке Source Files в качестве "Startup VIs" указать StartUp.vi ? Естественно Main FP.vi Always Included. Так у меня так и сделано. Посмотрите в приложенном проекте. Или что то другое имеется ввиду под "динамически запускать" ?
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Запрет на повторный запуск

Сообщение Blackman »

Согласна, но в свойствах Window Appearance StartUp.vi стоит птичка "Show front panel when loaded"
???
VI Properties.png
Пробовала я метод FP.Open - результат тот же, не срабатывает.
Убедитесь, что при сборке приложения фронт панель StartUp.vi не удаляется.

Обновите Вашу версию LabVIEW и Runtime Engine. Было несколько исправлений и как минимум один ServicePack.

Upd: Мой Test2016.exe
Вложения
TestApp.png
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Запрет на повторный запуск

Сообщение jane_wild »

Вы меня не поняли, видимо я плохо объяснила.
В прилагаемом примере все работает, а вот в реальном проекте нет
Эта цитата из моего первого поста. Создав простенький проект, я показала сам механизм вызова, в верности которого не уверена, может нужно по другому как то делать вызов главного VI, что бы не цеплять все dependences StartUp-ом. Так вот, в этом проекте все работает и выложила я его в LV2013 для доступа к нему большей аудитории. Хотя сама работаю в LV2016. А вот в реальном проекте нет, в смысле заставка не показывается пока все не инициализируется, потом на мгновение выскочит и тут же исчезает поскольку стартует главный VI (и галочка там Show FP стоит). Вот нашла ветку с описанием моей проблемы на буржуйском форуме, решение которой описывается на другой ветке Там в конце есть ссылка на проект, но у меня не установлены какие то тулкиты, потому как половина VI с вопросительными знаками...
rsv
advanced
advanced
Сообщения: 170
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2020
Откуда: Россия, Ижевск
Благодарил (а): 33 раза
Контактная информация:

Re: Запрет на повторный запуск

Сообщение rsv »

Подниму тему.
Проблема примерно та же - запрет повторного запуска приложения для нетерпеливых (которые не дождались и нажали ещё раз) и для забывчивых (приложение уже запущено, но его не видно и пытаются запустить ещё раз).

Текущее состояние проблемы:
Опция allowmultipleinstances=False установлена по умолчанию (даже если напрямую в ini-файле не прописана), но она распространяется только на запуск из одной папки. Если запуск выполняется из другой папки, то опция не работает (в обоих ini-файлах прописывал, не помогло).

Предполагаю, что можно использовать Shared Variable. Может ещё какие-то варианты есть (интересует именно запрет, анимация здесь не подойдёт)?
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Запрет на повторный запуск

Сообщение Borjomy_1 »

Ну извините, два разных экземпляра exe, запускаемые из разных мест, это не проблема реализации LabView. Это ваши системные ошибки. Почему пользователь вообще может запустить два разных приложения? Вы ему заботливо кладете две иконки рядом? Опять-же, тяжелое приложение это тоже системная ошибка. Грузите необходимый минимум, а остальное по мере необходимости.
rsv
advanced
advanced
Сообщения: 170
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2020
Откуда: Россия, Ижевск
Благодарил (а): 33 раза
Контактная информация:

Re: Запрет на повторный запуск

Сообщение rsv »

Borjomy_1 писал(а): 03 авг 2023, 11:55 Ну извините, два разных экземпляра exe, запускаемые из разных мест, это не проблема реализации LabView.
Это как раз проблема реализации LabView. Если бы не было конфликтов между одинаковыми приложеними, то и проблем бы не было. Если несколько копий приложения не могут сосуществовать одновременно, то должен быть программный запрет на запуск копий. Иначе это грозит головной болью для техподдержки как минимум. А как максимум - проблемами с оборудованием.
Borjomy_1 писал(а): 03 авг 2023, 11:55 Почему пользователь вообще может запустить два разных приложения? Вы ему заботливо кладете две иконки рядом?
Есть необходимость держать на ПК несколько версий приложения.

P.S. Тестировщики тоже пользователи.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Запрет на повторный запуск

Сообщение dadreamer »

Это обсуждалось тут: Multiple executable instances running without AllowMultipleInstances set in INI file. Но конкретного решения там нет. Надо "костылить" что-то своё, например, через IPC (TCP, NS и т.п.).
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Запрет на повторный запуск

Сообщение Borjomy_1 »

Самое простое - открытие UDP порта. Второе приложение этот-же порт открыть не сможет.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Лицевая панель»