Tôi gặp sự cố khi GUI của mình xuất hiện và không bị đóng băng trong khi đang chạy (và chờ đợi) một quy trình bên ngoài. Trong trường hợp này, drivers.exe là một chương trình rất đơn giản, nơi người dùng chỉ cần nhấp vào "OK". Vì vậy, bất cứ khi nào tôi nhấp vào OK, nó thoát. Tôi đang cố gắng để chỉ đơn giản là làm cho dải trạng thái của tôi đếm số lên (thực sự nhanh) như drivers.exe đang thực hiện. Nhưng trong thực tế, GUI của tôi không bao giờ xuất hiện ở tất cả cho đến khi thoát khỏi drivers.exe.Chạy một quy trình khác mà không có GUI đóng băng
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");
}
thể bạn vui lòng chỉ cho tôi như thế nào? Tôi đã làm cho nó một shot, và nó thực sự không làm việc ở tất cả. Hình thức của tôi vẫn sẽ không hiển thị ... trên thực tế. – Adam
Vấn đề là vòng lặp "while (t.IsAlive)". Anh ta cần phải loại bỏ điều đó khỏi chuỗi giao diện người dùng dù anh ta có sử dụng BackgroundWorker hay không. – Phil