estoy teniendo problemas para conseguir mi interfaz gráfica de usuario a aparecer y se congela mientras se ejecuta (y esperando a) un proceso de exterior. En este caso, drivers.exe es un programa muy simple en el que el usuario simplemente hace clic en "Aceptar". Entonces cada vez que hago clic en Aceptar, sale. Estoy intentando simplemente hacer que mi número de registro de franjas de estado suba (realmente rápido) a medida que se ejecuta drivers.exe. Pero en la práctica, mi GUI nunca aparece hasta que se cierra drivers.exe.la ejecución de otro proceso sin GUI congelación
private void run_drivers()
{
Console.WriteLine("Start Driver");
int driver_timeout_in_minutes = 20;
System.Diagnostics.Process driverproc = System.Diagnostics.Process.Start(Application.StartupPath + "\\" + "drivers.exe");
driverproc.WaitForExit(driver_timeout_in_minutes * 1000 * 60); //uses milliseconds, we must convert
}
private void Form1_Load(object sender, EventArgs e)
{
ThreadStart worker = new ThreadStart(run_drivers);
Console.WriteLine("Main - Creating worker thread");
toolStripStatusLabel1.Text = "hi";
Thread t = new Thread(worker);
t.IsBackground = true;
t.Start();
Console.WriteLine("Main - Have requested the start of worker thread");
int i = 0;
while (t.IsAlive)
{
i++;
toolStripStatusLabel1.Text = i.ToString();
}
Console.WriteLine("Dead");
}
¿Me puede mostrar cómo? Le di una oportunidad, y realmente no funcionó en absoluto. Mi forma aún no se muestra ... en absoluto, de hecho. – Adam
El problema es el ciclo "while (t.IsAlive)". Necesita sacar eso de la interfaz de usuario, ya sea que use BackgroundWorker o no. – Phil