Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    181

    [Java] Evitare di far partire più volte un programma

    buongiorno,

    il titolo del post è piuttosto esplicito:
    come posso evitare che un cliente faccia partire più volte un programma?
    cioè, se questo mi clicca quindici volte su un'icona :master:, mi fa apre il software 15 volte!

    c'è qualche controllo, qualche istruzione particolare da seguire?

    grazie!
    -- John --

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    mmm magari con un file di "lock"? Lo scrivi nella temp dir di sistema quando lanci il programma e lo cancelli alla chiusura. Se il file esiste già avverti che probabilmente sta già girando un'istanza dell'applicazione (questo perché potrebbe succedere che il programma sia chiuso in modo "anomalo" e non possa cancellare il file di lock).
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    181
    ci provo, grazie intanto
    -- John --

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    181
    ciao..

    facendo in quest modo però, se mi si spegne il pc, o viene chiusa l'applicazione con ctrl-alt-canc (e signori.. stiam parlando di windows.. ) il file rimane, e il successivo avvio dell'applicazione mi da così brutte sorprese.

    non vi sono altri modi?
    tipo, chessò.. sapere se un processo è già avviato?
    -- John --

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Soluzione numero 2: con i Socket.

    codice:
    import java.net.*;
    import java.io.*;
    /**
     *
     * @author Andrea
     */
    public class RunOnce {
        
        /** Creates a new instance of RunOnce */
        ServerSocket ss1,ss2;
        public RunOnce() {
            try {
                ss1 = new ServerSocket(6666);
            }
            catch (IOException e) {
                System.out.println("Un'altra istanza del programma è in esecuzione!");
                System.exit(-1);
            }
        }
        
        public static void main (String[] args) {
            RunOnce ro = new RunOnce();
            try {
                System.in.read();
            }
            catch (Exception e) {
                
            }
        }    
    }
    Compila ed esegui in due finestre differenti. Occhio che chiaramente la porta specificata dev'essere disponibile (ie: non devi avere servizi che la impegnino).
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    181
    Mamma mia!
    Ti ringrazio, perfetto!
    -- John --

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.