Forums Últimos mensajes - Powered by IBM
 

Proceso y parametros

15/09/2009 - 00:21 por Edilberto Arteaga | Informe spam
Hola a todos,
Tengo un ejecutable al que le paso un parametro, pero quiero que si mando a
llamar el mismo ejecutable la segunda vez con un parametro diferente no me
cree otra instancia, pero si que me cambie el valor del argumento.
por ejemplo si mando
miexe.exe valor1 y luego mando miexe.exe valor2 que no cree otra instancia
pero si que actualice el valor1 a valor2
hasta el momento se detectar si el exe ya esta en ejecucion pero no se como
cambiar el parametro
este es mi codigo

[STAThread]
static void Main(string[] args)
{
bool _unico;
string __valor = string.Empty;
if (args.Length>0)
__valor = args[0];

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Mutex app = new Mutex(false, "Balanzas2", out _unico);
if (_unico)
{
Application.Run(new Form1(__valor));
}
else
{
//aqui deberia de cambiar el valor del parametro
}

//Application.Run(new ListUnidades(__valor));
}
 

Leer las respuestas

#1 Alberto Poblacion
15/09/2009 - 09:16 | Informe spam
"Edilberto Arteaga" wrote in message
news:
Tengo un ejecutable al que le paso un parametro, pero quiero que si mando
a llamar el mismo ejecutable la segunda vez con un parametro diferente no
me cree otra instancia, pero si que me cambie el valor del argumento.
por ejemplo si mando
miexe.exe valor1 y luego mando miexe.exe valor2 que no cree otra
instancia pero si que actualice el valor1 a valor2
hasta el momento se detectar si el exe ya esta en ejecucion pero no se
como cambiar el parametro
este es mi codigo

[STAThread]
static void Main(string[] args)
{
bool _unico;
string __valor = string.Empty;
if (args.Length>0)
__valor = args[0];

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Mutex app = new Mutex(false, "Balanzas2", out _unico);
if (_unico)
{
Application.Run(new Form1(__valor));
}
else
{
//aqui deberia de cambiar el valor del parametro
}

//Application.Run(new ListUnidades(__valor));
}




Es más complicado de lo que parece. Ese código que tiene el "Main" se
está ejecutando en un proceso separado de la primera copia que ejecutaste.
El Mutex lo ven los dos procesos porque se mantiene dentro del sistema
operativo, pero el parámetro, que está en memoria del programa, se encuentra
completamente aislado y no puede uno de los procesos cambiar el valor en el
otro proceso.

Necesitas, por lo tanto, un mecanismo de comunicación inter-procesos
(por ejemplo, una canalización con nombre ("named pipe")). El primer
programa que arrancas tiene que iniciar un hilo que se quede a la escucha
para recibir notificaciones, mientras que el segundo proceso, en donde has
puesto lo de "aqui deberia de cambiar el valor del parametro", lo que tiene
que hacer es transmitir al primer proceso un mensaje con la orden de cambio
de parámetro incluyendo el nuevo valor que tiene que usar.

Preguntas similares