2012-01-20 25 views
11

Tôi chỉ mới bắt đầu phát triển Net (C#) và đã đi qua một số mã có tôi hơi bối rối ....C# - Application.Run()

Nếu tôi có

Form myForm = new Form(); 

gì dòng lệnh sau đây thực sự làm:

Application.Run(myForm); 

Liệu nó về cơ bản làm điều tương tự như myForm.ShowDialog() hoặc myForm.Show() (đó là những gì tôi nghĩ, khi chạy một hình thức sẽ làm) .... .

Tôi luôn thấy rằng msdn là tài nguyên kém để giải thích đúng tài liệu cho người mới

+0

Xem [câu hỏi này] (http://stackoverflow.com/questions/5200292/application-runform-vs-form-show) – nickd

Trả lời

15

Application.Run(myForm); làm cho rằng hình thức có thể nhìn thấy người dùng. Đây là hình thức đầu tiên được tải trong bộ nhớ. Và nó chạy biểu mẫu này trong một vòng lặp tin nhắn, để bạn có được tất cả các sự kiện của người dùng.

ngắn Trả lời:

Application.Run bắt đầu chạy một vòng lặp thông điệp ứng dụng tiêu chuẩn trên thread hiện hành.

dài trả lời:

Application.Run làm cho ứng dụng cửa sổ đi vào vòng lặp thông điệp trong WinMain để xử lý các cửa sổ khác nhau thông điệp các bài viết hệ điều hành cho một vòng lặp thông điệp queue.The tin nhắn, "Bản lề" cho đến khi nó nhận được một WM_QUIT tin nhắn. Nó sử dụng GetMessagePeekMessage để truy xuất lại thư và PostMessage để gửi thư được giải quyết tới quy trình Windows.

Nếu bạn làm

Form myForm = new Form(); 
myForm.Show(); 

nó sẽ hiển thị các hình thức và thoát ra ngoài. Bạn sẽ sử dụng new Form() & .Show() khi bạn muốn khởi chạy biểu mẫu mới từ biểu mẫu hiện có.

Hy vọng điều này sẽ trả lời câu hỏi của bạn.

+4

Điều quan trọng ở đây là vòng lặp tin nhắn. Với điều này bạn về cơ bản mở một windo mà không có vòng lặp tin nhắn đang chạy. – TomTom

+2

Thật vậy, đó là máy bơm thông điệp.Bạn sẽ thấy dễ hiểu hơn nếu bạn đã thực hiện bất kỳ phát triển Windows C++ nào - mức trừu tượng cao hơn của C# làm cho một số thứ khó nắm bắt hơn. –

+0

@VladislavZorov đúng vậy. Tôi đã làm một số công cụ trong VC++, ngay cả trong đó bạn nhận được rất nhiều thứ nấu chín. –

4

để bắt đầu ứng dụng có biểu mẫu chính, để ứng dụng chấm dứt khi biểu mẫu chính bị đóng. nó sẽ được liên kết với chuỗi hiện tại. nó chạy biểu mẫu này trong một vòng lặp tin nhắn.

Vòng lặp thông báo nghĩa là: Chúng hoạt động dựa trên các thông điệp mà hệ điều hành đăng lên luồng chính của ứng dụng. Các tin nhắn này được nhận từ hàng đợi tin nhắn bởi ứng dụng bằng cách liên tục gọi hàm GetMessage (PeekMessage) trong một phần mã được gọi là "vòng lặp sự kiện".

Application Run()

+1

-1. Đây là cirular và không giải thích bất cứ điều gì. – TomTom

+0

yup .. sẽ sửa nó :) .. –

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