2010-12-16 12 views
8

cho phép nói rằng tôi có quy trình với ID 1234. Quá trình này đang chạy trước khi ứng dụng của tôi chạy.Sự cố với Quy trình đã Thoát

tôi có mã này:

 Process app = Process.GetProcessById(1234); 
     MessageBox.Show(app.MainWindowTitle); 
     app.Exited += this.methodShowsMessageBox; 

Bây giờ, khi tôi biên dịch và chạy ứng dụng, nó được quá trình và hiển thị tiêu đề cửa sổ chính. Tuy nhiên khi tôi đóng quá trình 1234, app.Exited không nto lửa ... tại sao điều này? Và làm thế nào tôi sẽ làm cho nó cháy?

Trả lời

17

Xin lưu ý rằng documentation quy định rằng EnableRaisingEvents phải được đặt thành true trước khi sự kiện này kích hoạt.

+0

yahoo bạn đã lưu ngày của mình! – TheVillageIdiot

3

Theo mặc định, vì lý do hiệu suất, lớp Process không tăng sự kiện. Nếu bạn muốn đối tượng Process để xem Exited và tăng sự kiện đó, bạn cần thiết lập thuộc tính EnableRaisingEvents thành true.

Có chi phí liên quan đến đang xem quy trình thoát. Nếu EnableRaisingEvents là đúng, Sự kiện đã thoát được nâng lên khi quá trình liên kết chấm dứt. Các thủ tục mà bạn đã chỉ định cho sự kiện đã chạy vào thời điểm đó.

Đôi khi, đơn đăng ký của bạn bắt đầu quy trình nhưng không cần phải được thông báo về việc đóng cửa. Ví dụ: ứng dụng của bạn có thể khởi động Notepad tới cho phép người dùng thực hiện chỉnh sửa văn bản nhưng không sử dụng thêm ứng dụng nào của ứng dụng Notepad. Bạn có thể chọn không được thông báo khi thoát khỏi quy trình vì không phải là liên quan đến hoạt động liên tục của đơn đăng ký của bạn. Đặt BậtRaisingEvents để tiết kiệm sai tài nguyên hệ thống.