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

Обсуждение, связанное с разработкой ПО верхнего уровня

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

Postby jane_wild on 28 Apr 2017, 21:56

Запуск довольно "увесистого" приложения происходит со значительной задержкой. В смысле юзер сделал двойной щелчок по иконке, а Frot Panel появилась секунд через 10. Что собственно вводит его в заблуждение и он щелкает еще пару раз, запуская уже запущенное приложение. Далее понятно ошибки и последующий вылет всего, что таким непосильным трудом инициализировалось. Мне видится два пути. Первый - проверка запущено ли уже приложение с данным именем, с последующим запретом на повторный запуск. И второй - показать юзеру окошко типа splashscreen, который даст понять, мол нечего щелкать запущено уже все...
Мне кажется что первый вариант более правильный (а лучше комбинация двух), но я не знаю как проверить на наличие уже запущеной копии, особенно если эта копия запущена в отдельном потоке.
Решила попытаться сделать по второму варианту, но и тут неудача. В прилагаемом примере все работает, а вот в реальном проекте нет. В смысле этот splashscreen появляется буквально на мгновение, все с той же 10-ти секундной задержкой и тутже запускается главное приложение. Почему то происходит ожидание всей инициализации, хотя по идее Frot Panel StartUP.vi должена появится сразу же. Понимаю что я чего то не понимаю. Посмотрите пожалуйста может вложеный проект. Может я чего не правильно делаю? И вообще кто как решает эту проблему. Запрет на повторный запуск уже запущенного приложения. Спасибо
Attachments
SplashScreen.zip
(226.47 KiB) Downloaded 102 times
User avatar
jane_wild
user
user
 
Posts: 92
Joined: 30 Jun 2016, 02:11
LabVIEW Version: 2016
Karma: 0

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

Postby Borjomy_1 on 28 Apr 2017, 22:07

По умолчанию запускается один экземпляр. Это регулируется в ини файле, рядом с экзешником.
Front панель сначала грузит все SubVI, а уже потом запускается. Это заметно на тяжелых приложениях, либо на слабых машинах. Т. е если загрузка происходит больше некоторого времени (секунд десять), то появляется индикаторная панель, которая отображает процесс загрузки VI-ек
Borjomy_1
expert
expert
 
Posts: 1825
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 319
VIP

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

Postby jane_wild on 28 Apr 2017, 22:23

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

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
User avatar
jane_wild
user
user
 
Posts: 92
Joined: 30 Jun 2016, 02:11
LabVIEW Version: 2016
Karma: 0

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

Postby Borjomy_1 on 28 Apr 2017, 22:48

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

Взято отсюда:
viewtopic.php?f=84&t=1984&p=17801
Borjomy_1
expert
expert
 
Posts: 1825
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 319
VIP

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

Postby Borjomy_1 on 28 Apr 2017, 23:03

Можно еще попробовать сделать основным VI- StartUp, а уже из него динамически запускать MainFP.
Borjomy_1
expert
expert
 
Posts: 1825
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 319
VIP

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

Postby Kosist on 28 Apr 2017, 23:15

Присоединяюсь к идее Borjomy_1 - самый простой, но эффективный выход из ситуации.
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 878
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 246
CLAD I/O VIP students

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

Postby Blackman on 28 Apr 2017, 23:23

Вы не открываете фронт панель SplashScreen (StartUp.vi). Поэтому в RunTime Вы SplashScreen и не видите. А так все работает правильно.
Blackman
leader
leader
 
Posts: 783
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 225
VIP

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

Postby jane_wild on 29 Apr 2017, 01:17

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

Спасибо, это сработало! Повторного запуска не происходит, сколько "не жмякай" по иконке.

Blackman wrote:Вы не открываете фронт панель SplashScreen (StartUp.vi). Поэтому в RunTime Вы SplashScreen и не видите. А так все работает правильно.

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

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


Имеется ввиду в Application Builder на вкладке Source Files в качестве "Startup VIs" указать StartUp.vi ? Естественно Main FP.vi Always Included. Так у меня так и сделано. Посмотрите в приложенном проекте. Или что то другое имеется ввиду под "динамически запускать" ?
User avatar
jane_wild
user
user
 
Posts: 92
Joined: 30 Jun 2016, 02:11
LabVIEW Version: 2016
Karma: 0

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

Postby Blackman on 29 Apr 2017, 08:45

Согласна, но в свойствах Window Appearance StartUp.vi стоит птичка "Show front panel when loaded"

???
VI Properties.png

Пробовала я метод FP.Open - результат тот же, не срабатывает.

Убедитесь, что при сборке приложения фронт панель StartUp.vi не удаляется.

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

Upd: Мой Test2016.exe
Attachments
TestApp.png
Blackman
leader
leader
 
Posts: 783
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 225
VIP

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

Postby jane_wild on 29 Apr 2017, 18:09

Вы меня не поняли, видимо я плохо объяснила.
В прилагаемом примере все работает, а вот в реальном проекте нет

Эта цитата из моего первого поста. Создав простенький проект, я показала сам механизм вызова, в верности которого не уверена, может нужно по другому как то делать вызов главного VI, что бы не цеплять все dependences StartUp-ом. Так вот, в этом проекте все работает и выложила я его в LV2013 для доступа к нему большей аудитории. Хотя сама работаю в LV2016. А вот в реальном проекте нет, в смысле заставка не показывается пока все не инициализируется, потом на мгновение выскочит и тут же исчезает поскольку стартует главный VI (и галочка там Show FP стоит). Вот нашла ветку с описанием моей проблемы на буржуйском форуме, решение которой описывается на другой ветке Там в конце есть ссылка на проект, но у меня не установлены какие то тулкиты, потому как половина VI с вопросительными знаками...
User avatar
jane_wild
user
user
 
Posts: 92
Joined: 30 Jun 2016, 02:11
LabVIEW Version: 2016
Karma: 0


Return to Лицевая панель

Who is online

Users browsing this forum: No registered users and 8 guests

cron