none
Usar Mutex con C# RRS feed

  • Pregunta

  • El mutex es muy bueno pero esta presentando un error, por ejemplo si inicias el aplicativo funciona a la perfección cada vez que se ejecuta el siguiente lo detecta y ya no se vuelve a ejecutar.

    Pero si tu aplicatico lanza un MessageBox.Show y en ese mismo momento lo vuelves a ejecutar la instancia se inicia.

    Como se puede solucionar este problema.
    Gracias

    private static bool FirstInstance
            {
                get
                {
                    System.Threading.Mutex miMutex; 
                    bool nuevaInstancia;//
                    miMutex = new System.Threading.Mutex(true, "miaplication", out nuevaInstancia);
                    return nuevaInstancia;
                }
            }

    en el void

    static void Main()
            {
                bool respuesta = FirstInstance;
    
                if (respuesta == true)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new Form1());
                }
                else
                {
                    MessageBox.Show("La applicación ya esta en ejecución.");
    
                    Application.Exit();
                }
    
    
            }


    Conocuica

    sábado, 9 de marzo de 2013 21:49

Respuestas

  • Pero si tu aplicatico lanza un MessageBox.Show y en ese mismo momento lo vuelves a ejecutar la instancia se inicia.

    y para que quieres lanzar un messagebox ?

    ademas en el main no necesitas esto

     Application.Exit();

    si se supone que nunca pasas por

     Application.Run(new Form1());

    la aplicacion nunca inicia

                if (respuesta)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new Form1());
                }
                else
                    MessageBox.Show("La applicación ya esta en ejecución.");
    
    

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta conocuica martes, 29 de abril de 2014 20:14
    sábado, 9 de marzo de 2013 22:37

Todas las respuestas

  • Pero si tu aplicatico lanza un MessageBox.Show y en ese mismo momento lo vuelves a ejecutar la instancia se inicia.

    y para que quieres lanzar un messagebox ?

    ademas en el main no necesitas esto

     Application.Exit();

    si se supone que nunca pasas por

     Application.Run(new Form1());

    la aplicacion nunca inicia

                if (respuesta)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new Form1());
                }
                else
                    MessageBox.Show("La applicación ya esta en ejecución.");
    
    

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta conocuica martes, 29 de abril de 2014 20:14
    sábado, 9 de marzo de 2013 22:37
  • Leandro,

    Ejecuto el app esta en funcionamiento y el messagebox es, si por algun motivo se presenta un error, se lanza un messagebox con el error, en pruebas lo vuelven a ejecutar justo en ese momento, y ya tienes dos instancias. Esto esta mal.

    Si ejecutas el app en proceso y jecutas nuevamente, el app este te muestra el mensaje "La aplicación ya esta en ejecucion" esto es valido.

    Saludos,


    Conocuica


    • Editado conocuica lunes, 11 de marzo de 2013 4:12
    domingo, 10 de marzo de 2013 17:45