2012-06-19 31 views
5

thể trùng lặp:
How to know if Process.Start() is successful?C# - làm thế nào để kiểm tra xem một quá trình được bắt đầu thành công

Tôi có một quá trình tương tự như một cơ quan giám sát (chúng ta hãy gọi nó WD) trong chương trình của tôi mà là một tiến trình đang chạy khác (hãy gọi nó là A). Tôi bắt đầu quy trình WD tại một sự kiện nhất định, giả sử một phím được nhấn và tôi muốn bắt đầu một quá trình khác với quy trình này, hãy gọi nó là B.

Điều là tôi muốn tắt quá trình ban đầu A sau khi tôi biết rằng quá trình B đã được bắt đầu thành công. Làm thế nào tôi có thể kiểm tra điều đó?

Tôi đang bắt đầu quá trình WDB với cú pháp Process.Start(argList)ProcessInfo(argList).

Mỗi quy trình là một ứng dụng Giao diện điều khiển C# đơn giản.

+0

đã bạn tryed sử dụng try {} catch {}? –

+0

Vấn đề là phần bắt thử giúp bạn mở các ngoại lệ. Tôi đã làm điều này, nhưng nó không cung cấp cho tôi thông tin liên quan đến thời gian chờ đợi để mở quá trình đó. – Simon

Trả lời

4

Process.Start trả về một boolean (đúng nếu quá trình bắt đầu một cách chính xác) Kiểm tra MSDN này link cho Process.Start() phương pháp.

Mã của bạn nên có cái gì đó như:

 Process B= new Process(); 

     try 
     { 
      B.StartInfo.UseShellExecute = false; 
      B.StartInfo.FileName = "C:\\B.exe"; 
      B.StartInfo.CreateNoWindow = true; 
      if (B.Start()) 
      { 
       // Kill process A 
      } 
      else 
      { 
       // Handle incorrect start of process B and do NOT stop A 
      } 

     } 
     catch (Exception e) 
     { 
      // Handle exception and do NOT stop A 
     } 
0

Process.Start

lợi nhuận: đúng nếu một nguồn tài nguyên quá trình được bắt đầu; false nếu không có tài nguyên quy trình mới nào được bắt đầu (ví dụ: nếu quá trình hiện có được sử dụng lại).

Tôi giả sử bạn chỉ nên kiểm tra giá trị trả lại là Process.Start. Nếu số true của bạn, bạn có thể đóng quá trình hiện tại.

Tùy thuộc vào tình trạng quá tải bạn sử dụng, giá trị trả lại có thể là null nếu không thành công.

Các vấn đề liên quan