2011-08-22 30 views
62

Thực hành tốt nhất khi đóng ứng dụng C# là gì?Đóng các ứng dụng

Tôi đã đọc mà bạn có thể sử dụng:

Environment.Exit(0); or Application.Exit(); 

Nhưng sự khác biệt là gì?

Hơn nữa, liên quan đến Environment.Exit (0), tôi đã sử dụng các mã thoát trước khi làm việc với Java nhưng chưa bao giờ hoàn toàn hiểu mục đích của chúng. Họ đóng vai trò gì khi thoát khỏi một ứng dụng trong C#?

+2

Phụ thuộc vào ứng dụng của bạn. Nếu bạn viết một con quỷ, sau đó trả về 0; nếu bạn sử dụng ứng dụng Windows, sau đó đóng biểu mẫu chính. Không sử dụng chấm dứt cưỡng bức. – Cynede

+1

Các bản sao có thể có http://stackoverflow.com/questions/1312885/application-exit-vs-application-exitthread-vs-environment-exit –

+1

@jalal có thể là một số quyền của bạn .. Nhưng, tôi sẽ không nói nó trùng lặp .. Tôi đã thêm liên kết đó vào bài đăng của tôi dưới đây trước một phút nhận xét của bạn. Xin đừng đánh dấu là trùng lặp, nó hy vọng nó có giá trị. –

Trả lời

64

System.Windows.Forms.Application.Exit() - Thông báo cho tất cả các máy chủ thông báo mà chúng phải chấm dứt, và sau đó đóng tất cả các cửa sổ ứng dụng sau khi các thông báo được xử lý. Phương thức này dừng tất cả các vòng lặp tin nhắn đang chạy trên tất cả các luồng và đóng tất cả các cửa sổ của ứng dụng. Phương pháp này không buộc ứng dụng thoát ra. Phương thức Exit thường được gọi từ bên trong một vòng lặp tin nhắn và bắt đầu chạy để trả về. Để thoát khỏi vòng lặp tin nhắn cho chỉ chuỗi hiện tại, hãy gọi ExitThread. Đây là cuộc gọi để sử dụng nếu bạn đang chạy một ứng dụng WinForms. Như một hướng dẫn chung, sử dụng cuộc gọi này nếu bạn đã gọi System.Windows.Forms.Application.Run.

System.Environment.Exit (exitCode) - Chấm dứt quá trình này và cung cấp cho hệ điều hành cơ bản mã thoát được chỉ định. Cuộc gọi này yêu cầu bạn có quyền SecurityPermissionFlag.UnmanagedCode. Nếu bạn không, một lỗi SecurityException xảy ra. Đây là cuộc gọi để sử dụng nếu bạn đang chạy một ứng dụng giao diện điều khiển.

Tôi hy vọng nó là tốt nhất để sử dụng Application.Exit

việc kiểm tra này liên kết Application.Exit() vs Application.ExitThread() vs Environment.Exit()http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx

+5

Có thể có giá trị chỉ ra một cách rõ ràng rằng trước khi bạn gọi 'Application.Run' lựa chọn duy nhất của bạn là' Environment.Exit' như 'Application.Exit' sẽ không có hiệu lực. – Carsten

+1

Tôi có hai mẫu đăng nhập và biểu mẫu chính. khi nút đăng nhập được nhấp vào biểu mẫu đăng nhập tôi sử dụng this.hide() khi đăng nhập được nhấp và biểu mẫu chính mở ra và từ đó tôi sử dụng ẩn khi biểu mẫu được đóng lại thì biểu mẫu đăng nhập hiển thị lại. nếu tôi chạy ứng dụng và bấm vào nút đăng nhập và sau đó đóng mainform nhiều lần và khi tôi nhấp vào exit (System.Windows.Forms.Application.Exit()) nút trên mẫu đăng nhập, nó sẽ hiển thị tất cả các hình thức đăng nhập mà tôi đã trốn. nhưng nếu tôi sử dụng (System.Environment.Exit (0)) nó sẽ đóng và thoát khỏi ứng dụng hoàn toàn. tất cả trong tất cả tôi sẽ nói sau này là tốt nhất –

16

Application.Exit là dành cho các ứng dụng Windows Forms - nó thông báo cho tất cả các máy chủ tin nhắn mà chúng phải chấm dứt, chờ chúng hoàn tất xử lý sự kiện và sau đó chấm dứt ứng dụng. Lưu ý rằng nó không nhất thiết buộc ứng dụng thoát ra.

Environment.Exit được áp dụng cho tất cả các ứng dụng Windows, tuy nhiên nó chủ yếu được sử dụng trong các ứng dụng bảng điều khiển. Nó ngay lập tức chấm dứt quá trình với mã thoát đã cho.

Nói chung bạn nên sử dụng Application.Exit trong ứng dụng Windows Forms và Environment.Exit trong giao diện điều khiển ứng dụng, (mặc dù tôi thích để cho các điểm chạy Main phương pháp/nhập cảnh vào hoàn chứ không phải gọi Environment.Exit trong giao diện điều khiển ứng dụng).

Để biết thêm chi tiết, xem tài liệu MSDN.

+0

Cảm ơn câu trả lời. Tôi cần phải thoát khỏi ứng dụng của tôi từ một lớp khác hơn là Program.cs và nó là một ứng dụng giao diện điều khiển, và điều này hoạt động rất tốt. Tôi có thể sử dụng từ khóa trở lại cũng như tôi tin và rằng sẽ cho phép kết thúc chính chạy, nhưng nó làm cho không có sự khác biệt trong trường hợp này. – Radmation

0

Chúng đóng vai trò gì khi thoát khỏi ứng dụng trong C#?

Giống như mọi ứng dụng khác. Về cơ bản họ được trả lại cho người gọi. Irrelvant nếu ythe bắt đầu là một nhấp chuột đôi iicon. Có liên quan là cuộc gọi là một tập tin thực thi quyết định xem ứng dụng có hoạt động trên mã trả về hay không. SO, trừ khi bạn viết một chương trình cần điều này, mã trả về là không liên quan.

Nhưng điểm khác biệt là gì?

Một đến từ môi trường từ System.Windows.Forms? .Application. Functionall không nên có nhiều sự khác biệt.

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