|
Модераторы: LSD, AntonSaburov |
|
suomi |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 57 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Вопрос всегда мучал, как отслеживать количество запущенных GUI-приложений, ну и естно сократить это число жо одного, так что при повторном запуске появилась масага в диалоге - мол приложение запущено уже!
|
|||
|
||||
powerOn |
|
|||
software saboteur Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
При запуске программы проверяй наличие какого-нибудь файла-метки. Если файл есть, то выдавай сообщение, что мол программа уже запущена... и завершай прогу.
Если файл-метка отсутствует, то создавай его и продолжай работу. В конце работы программы удали файл-метку. |
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 209 Всего: 537 |
Или слушать некий порт.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Metal_Heart |
|
|||
а почему бы и нет? Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
powerOn, у твоего метода есть нехорошее место, а именно:
прога не успела удалить файл метку (сбой проги, сбой jvm, отключили электричество и т.д.) Тогда такие ситуации придется описывать в инструкции, типа "ручное восстановление ..." Это я к тому, что вариант LSD намного безопаснее -------------------- не стыдно учиться, а стыдно не учиться |
|||
|
||||
powerOn |
|
|||
software saboteur Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Ну да. Инструкция пригодится. Как раз можно вставить её в сообщение при неудачной загрузке программы. А что если порт уже был кем то занят? То прога вообще не запустится... И даже если искать свободный порт, то как об нем узнает вторая копия программы... |
|||
|
||||
Metal_Heart |
|
|||
а почему бы и нет? Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
только проверять доступность порта - тоже не хорошо, я бы реализовал это так: зарезервировал диапазон портов и при старте их все перебирал, а затем, если копий проги нет, в первый доступный порт засылал бы некоторые данные, идентифицирующие себя. Ну, а если при старте проги в каком-то порту есть данные идентифицирующие первый экземпляр проги, то выдавал бы соотв. сообщение вот Это сообщение отредактировал(а) Metal_Heart - 21.11.2006, 15:31 -------------------- не стыдно учиться, а стыдно не учиться |
|||
|
||||
w1nd |
|
|||
Вертилятор Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Порты - это вообще не хорошо. А если у человека совсем отсутствует сетевой интерфейс и службы (включая loopback )?
Файл - надежнее. Только проверять нужно не его наличие, а блокировку. Eclipse использует именно такой способ и проблем с этим не было ни разу. Это сообщение отредактировал(а) w1nd - 21.11.2006, 15:37 -------------------- |
|||
|
||||
suomi |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 57 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
LSD, хороший вариант! А вот примерчик можно привести, кто должен прослушивать порт - сервер или клиент ? И как определить наличие что программа уже запущена, просто ждать ответа от кого-то или как ?
|
|||
|
||||
Metal_Heart |
|
|||
а почему бы и нет? Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
suomi, как сам придумаешь так и будет
-------------------- не стыдно учиться, а стыдно не учиться |
|||
|
||||
LSD |
|
||||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 209 Всего: 537 |
Нужна только поддержка протокола TCP/IP, т.е. начиная с Win2000 и старше это все есть (про Linux я и не говорю). Вначале запускаешь проверку на то, что кто-то уже работает по этому порту:
а затем если никто порт не занял, занимаешь его сам (первый доступный из диапазона). -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
<Spawn> |
|
|||
Око кары:) Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: нет Всего: 64 |
А разве в Java нет доступа к объектам синхронизации ОС? Вроде Mutex, Semaphore? В Delphi легко данная проблема решалась через данные механизмы - незнаю насколько это осуществимо в Java, если нужен кросплатформенный код...
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 209 Всего: 537 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
cube |
|
|||
Опытный Профиль Группа: Участник Сообщений: 291 Регистрация: 11.4.2007 Репутация: 2 Всего: 3 |
как это можно реализовать? Можно пример... И еще можно ли сделать так чтобы при втором запуске разворачивался первый интерфейс приложения, как например Нетбинс (при повторном клике на ярлык разворачивается свернутое приложение?) |
|||
|
||||
_Michael |
|
|||
Опытный Профиль Группа: Участник Сообщений: 375 Регистрация: 23.6.2007 Где: з полонини Репутация: 2 Всего: 6 |
По-моему тут ета тема уже обсуждалась.
-------------------- ...не убивайся ни о чем - все временно, хоть ночь темна но светлым днем беременна... Саади |
|||
|
||||
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |