Tiểu trình, tiến trình , và sự đồng bộ phần cuối
Số trang: 6
Loại file: pdf
Dung lượng: 143.23 KB
Lượt xem: 12
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Tạo một đối tượng ProcessStartInfo và cấu hình cho nó // với các thông tin cần thiết để chạy tiến trình mới.
Nội dung trích xuất từ tài liệu:
Tiểu trình, tiến trình , và sự đồng bộ phần cuốiusing System;using System.Diagnostics;public class StartProcessExample { public static void Main () { // Tạo một đối tượng ProcessStartInfo và cấu hình cho nó // với các thông tin cần thiết để chạy tiến trình mới. ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = notepad.exe; startInfo.Arguments = file.txt; startInfo.WorkingDirectory = @C:\Temp; startInfo.WindowStyle = ProcessWindowStyle.Maximized; startInfo.ErrorDialog = true; // Tạo một đối tượng Process mới. using (Process process = new Process()) { // Gán ProcessStartInfo vào Process. process.StartInfo = startInfo; try { // Khởi chạy tiến trình mới. process.Start(); // Đợi tiến trình mới kết thúc trước khi thoát. Console.WriteLine(Waiting 30 seconds for process to + finish.); process.WaitForExit(30000); } catch (Exception ex) { Console.WriteLine(Could not start process.); Console.WriteLine(ex); } } // Nhấn Enter để kết thúc. Console.WriteLine(Main method complete. Press Enter.); Console.ReadLine(); }} 1.1 Kết thúc một tiến trình Bạn muốn kết thúc một tiến trình (một ứng dụng hay một dịch vụ). Thu lấy đối tượng Process mô tả tiến trình hệ điều hành cần kết thúc. Đối với các ứng dụng dựa-trên-Windows, hãy gọi phương thức Process.CloseMainWindow để gửi một thông điệp đến cửa sổ chính của ứng dụng. Đối với các ứng dụng dựa-trên-Windows bỏ qua CloseMainWindow, hay đối với các ứng dụng không-dựa-trên-Windows, gọi phương thức Process.Kill.Nếu khởi chạy một tiến trình mới từ mã lệnh được-quản-lý bằng lớp Process (đã đượcthảo luận trong mục 4.10), bạn có thể kết thúc tiến trình mới bằng đối tượng Process môtả tiến trình này. Bạn cũng có thể thu lấy các đối tượng Process chỉ đến các tiến trìnhkhác hiện đang chạy bằng các phương thức tĩnh của lớp Process (được tóm tắt trong bảng4.4).Bảng 4.4 Các phương thức dùng để thu lấy các tham chiếu Process Phương thức Mô tả Trả về đối tượng Process mô tả tiến trình hiện đang GetCurrentProcess tích cực. Trả về đối tượng Process mô tả tiến trình với ID GetProcessById được chỉ định. Trả về mảng các đối tượng Process mô tả tất cả các GetProcesses tiến trình hiện đang tích cực. Trả về mảng các đối tượng Process mô tả tất cả các tiến trình hiện đang tích cực với tên thân thiện GetProcessesByName được chỉ định. Tên thân thiện là tên của file thực thi không tính phần mở rộng và đường dẫn; ví dụ, notepad hay calc.Một khi đã có đối tượng Process mô tả tiến trình cần kết thúc, bạn cần gọi phương thứcCloseMainWindow hay phương thức Kill. Phương thức CloseMainWindow gửi mộtthông điệp đến cửa sổ chính của ứng dụng dựa-trên-Windows. Phương thức này có cùngtác dụng như thể người dùng đóng cửa sổ chính bằng trình đơn hệ thống, và nó cho cơhội ứng dụng thực hiện việc tắt một cách bình thường. CloseMainWindow sẽ không kếtthúc các ứng dụng không có cửa sổ chính hoặc các ứng dụng có cửa sổ chính bị vô hiệu(có thể vì một hộp thoại hiện đang được mở). Với những tình huống như thế,CloseMainWindow sẽ trả về false.CloseMainWindow trả về true nếu thông điệp được gửi thành công, nhưng không bảođảm tiến trình thật sự kết thúc. Ví dụ, các ứng dụng dùng để soạn thảo dữ liệu thường sẽcho cơ hội người dùng lưu lại các dữ liệu chưa được lưu nếu nhận được thông điệp này.Người dùng thường có cơ hội hủy bỏ việc đóng cửa sổ với những tình huống như thế.Điều này nghĩa là CloseMainWindow sẽ trả về true, nhưng ứng dụng vẫn cứ chạy khingười dùng hủy bỏ. Bạn có thể sử dụng phương thức Process.WaitForExit để báo hiệuviệc kết thúc tiến trình và thuộc tính Process.HasExited để kiểm tra tiến trình đã kết thúchay chưa. Và bạn cũng có thể sử dụng phương thức Kill.Phương thức Kill kết thúc một tiến trình ngay lập tức; người dùng không có cơ hội dừngviệc kết thúc, và tất cả các dữ liệu chưa được lưu sẽ bị mất. Kill là tùy chọn duy nhất đểkết thúc các ứng dụng dựa-trên-Windows không đáp lại CloseMainWindow và để kếtthúc các ứng dụng không-dựa-trên-Windows.Ví dụ dưới đây khởi chạy một thể hiện mới của Notepad, đợi 5 giây, sau đó kết thúc tiếntrình Notepad. Trước tiên, ví dụ này kết thúc tiến trình bằng CloseMainWindow. NếuCloseMainWindow trả về false, hoặc tiến trình Notepad vẫn cứ chạy sau khiCloseMainWindow được gọi, ví dụ này sẽ gọi Kill và buộc tiến trình Notepad kết thúc;bạn có thể buộc CloseMainWindow trả về false bằng cách bỏ mặc hộp thoại File Openmở.using System;using System.Threading;using System.Diagnostics;public class TerminateProcessExample { public static void Main () { // Tạo một Process mới và chạy notepad.exe. using (Process process = Process.Start(notepad.exe)) { // Đợi 5 giây và kết thúc tiến trình Notepad. Console.WriteLine(Waiting 5 seconds before terminating + notepad.exe.); Thread.Sleep(5000); // Kết thúc tiến trình Notepad. Console.WriteLine(Terminating Notepad with + CloseMainWindow.); // Gửi một thông điệp đến cửa sổ chính. if (!process.CloseMainWindow()) { // Không gửi được thông điệp. Kết thúc Notepad bằng Kill. Console.WriteLine(CloseMainWindow returned false - + terminating Notepad ...
Nội dung trích xuất từ tài liệu:
Tiểu trình, tiến trình , và sự đồng bộ phần cuốiusing System;using System.Diagnostics;public class StartProcessExample { public static void Main () { // Tạo một đối tượng ProcessStartInfo và cấu hình cho nó // với các thông tin cần thiết để chạy tiến trình mới. ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = notepad.exe; startInfo.Arguments = file.txt; startInfo.WorkingDirectory = @C:\Temp; startInfo.WindowStyle = ProcessWindowStyle.Maximized; startInfo.ErrorDialog = true; // Tạo một đối tượng Process mới. using (Process process = new Process()) { // Gán ProcessStartInfo vào Process. process.StartInfo = startInfo; try { // Khởi chạy tiến trình mới. process.Start(); // Đợi tiến trình mới kết thúc trước khi thoát. Console.WriteLine(Waiting 30 seconds for process to + finish.); process.WaitForExit(30000); } catch (Exception ex) { Console.WriteLine(Could not start process.); Console.WriteLine(ex); } } // Nhấn Enter để kết thúc. Console.WriteLine(Main method complete. Press Enter.); Console.ReadLine(); }} 1.1 Kết thúc một tiến trình Bạn muốn kết thúc một tiến trình (một ứng dụng hay một dịch vụ). Thu lấy đối tượng Process mô tả tiến trình hệ điều hành cần kết thúc. Đối với các ứng dụng dựa-trên-Windows, hãy gọi phương thức Process.CloseMainWindow để gửi một thông điệp đến cửa sổ chính của ứng dụng. Đối với các ứng dụng dựa-trên-Windows bỏ qua CloseMainWindow, hay đối với các ứng dụng không-dựa-trên-Windows, gọi phương thức Process.Kill.Nếu khởi chạy một tiến trình mới từ mã lệnh được-quản-lý bằng lớp Process (đã đượcthảo luận trong mục 4.10), bạn có thể kết thúc tiến trình mới bằng đối tượng Process môtả tiến trình này. Bạn cũng có thể thu lấy các đối tượng Process chỉ đến các tiến trìnhkhác hiện đang chạy bằng các phương thức tĩnh của lớp Process (được tóm tắt trong bảng4.4).Bảng 4.4 Các phương thức dùng để thu lấy các tham chiếu Process Phương thức Mô tả Trả về đối tượng Process mô tả tiến trình hiện đang GetCurrentProcess tích cực. Trả về đối tượng Process mô tả tiến trình với ID GetProcessById được chỉ định. Trả về mảng các đối tượng Process mô tả tất cả các GetProcesses tiến trình hiện đang tích cực. Trả về mảng các đối tượng Process mô tả tất cả các tiến trình hiện đang tích cực với tên thân thiện GetProcessesByName được chỉ định. Tên thân thiện là tên của file thực thi không tính phần mở rộng và đường dẫn; ví dụ, notepad hay calc.Một khi đã có đối tượng Process mô tả tiến trình cần kết thúc, bạn cần gọi phương thứcCloseMainWindow hay phương thức Kill. Phương thức CloseMainWindow gửi mộtthông điệp đến cửa sổ chính của ứng dụng dựa-trên-Windows. Phương thức này có cùngtác dụng như thể người dùng đóng cửa sổ chính bằng trình đơn hệ thống, và nó cho cơhội ứng dụng thực hiện việc tắt một cách bình thường. CloseMainWindow sẽ không kếtthúc các ứng dụng không có cửa sổ chính hoặc các ứng dụng có cửa sổ chính bị vô hiệu(có thể vì một hộp thoại hiện đang được mở). Với những tình huống như thế,CloseMainWindow sẽ trả về false.CloseMainWindow trả về true nếu thông điệp được gửi thành công, nhưng không bảođảm tiến trình thật sự kết thúc. Ví dụ, các ứng dụng dùng để soạn thảo dữ liệu thường sẽcho cơ hội người dùng lưu lại các dữ liệu chưa được lưu nếu nhận được thông điệp này.Người dùng thường có cơ hội hủy bỏ việc đóng cửa sổ với những tình huống như thế.Điều này nghĩa là CloseMainWindow sẽ trả về true, nhưng ứng dụng vẫn cứ chạy khingười dùng hủy bỏ. Bạn có thể sử dụng phương thức Process.WaitForExit để báo hiệuviệc kết thúc tiến trình và thuộc tính Process.HasExited để kiểm tra tiến trình đã kết thúchay chưa. Và bạn cũng có thể sử dụng phương thức Kill.Phương thức Kill kết thúc một tiến trình ngay lập tức; người dùng không có cơ hội dừngviệc kết thúc, và tất cả các dữ liệu chưa được lưu sẽ bị mất. Kill là tùy chọn duy nhất đểkết thúc các ứng dụng dựa-trên-Windows không đáp lại CloseMainWindow và để kếtthúc các ứng dụng không-dựa-trên-Windows.Ví dụ dưới đây khởi chạy một thể hiện mới của Notepad, đợi 5 giây, sau đó kết thúc tiếntrình Notepad. Trước tiên, ví dụ này kết thúc tiến trình bằng CloseMainWindow. NếuCloseMainWindow trả về false, hoặc tiến trình Notepad vẫn cứ chạy sau khiCloseMainWindow được gọi, ví dụ này sẽ gọi Kill và buộc tiến trình Notepad kết thúc;bạn có thể buộc CloseMainWindow trả về false bằng cách bỏ mặc hộp thoại File Openmở.using System;using System.Threading;using System.Diagnostics;public class TerminateProcessExample { public static void Main () { // Tạo một Process mới và chạy notepad.exe. using (Process process = Process.Start(notepad.exe)) { // Đợi 5 giây và kết thúc tiến trình Notepad. Console.WriteLine(Waiting 5 seconds before terminating + notepad.exe.); Thread.Sleep(5000); // Kết thúc tiến trình Notepad. Console.WriteLine(Terminating Notepad with + CloseMainWindow.); // Gửi một thông điệp đến cửa sổ chính. if (!process.CloseMainWindow()) { // Không gửi được thông điệp. Kết thúc Notepad bằng Kill. Console.WriteLine(CloseMainWindow returned false - + terminating Notepad ...
Tìm kiếm theo từ khóa liên quan:
công nghệ thông tin kĩ thuật lập trình ngôn ngữ lập trình ngôn ngữ C# C# Tiểu trình tiến trình và sự đồng bộ phần cuốiTài liệu liên quan:
-
52 trang 439 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 329 0 0 -
74 trang 309 0 0
-
96 trang 305 0 0
-
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 299 0 0 -
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 291 0 0 -
Tài liệu dạy học môn Tin học trong chương trình đào tạo trình độ cao đẳng
348 trang 291 1 0 -
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 282 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 279 0 0 -
EBay - Internet và câu chuyện thần kỳ: Phần 1
143 trang 278 0 0