2009-09-01 44 views
5

Tôi có một ứng dụng Windows Form trong C# và đang cố gắng tìm ra nơi tôi sẽ triển khai ứng dụng CLI tương đương với vòng lặp chính trong khi trong main(). Tôi đang sử dụng thiết kế gui của Visual C#.Windows GUI Main Loop Trong C# ... ở đâu?

EDIT: Sự cố được giải quyết với một phiên bản của Bộ hẹn giờ.

+3

Tôi nghi ngờ bạn đang nghĩ về điều này ở cấp độ sai. Bạn cũng có thể hỏi "ở đâu trong chương trình C# của tôi" dữ liệu cho một số đa giác được di chuyển đến GPU qua một số bus. Những ý tưởng đó không phải là khái niệm trong ngôn ngữ C#, đó là những chi tiết thực hiện mà thư viện, ngôn ngữ và thời gian chạy trừu tượng đi xa cho bạn. Toàn bộ các cửa sổ hình thành trong C# là để đảm bảo rằng bạn không bao giờ phải suy nghĩ về các vòng lặp tin nhắn nữa. Có, các chương trình hướng sự kiện được xây dựng từ các thông điệp của cửa sổ; đôi khi sự rò rỉ trừu tượng, nhưng bạn không cần phải nói chuyện trực tiếp ở cấp độ thông báo trong hầu hết các trường hợp bình thường. –

+0

@Orm: Ví dụ bạn đã liên kết đến là mã được viết rất kém. Nếu bạn sử dụng nó, tôi khuyên bạn nên sử dụng nó như là một tài liệu tham khảo cho những gì để tránh. –

+0

Tôi đồng ý, và vâng, đây là một cách crap để làm điều đó. Tôi đã thử, và nó không hoạt động tốt chút nào. – Orm

Trả lời

13

Nó nằm trong phương thức Application.Run. Bạn không nên gọi trực tiếp chức năng API GetMessage:

// MyForm is derived from `System.Windows.Forms.Form` class 
Application.Run(new MyForm()); 
+0

Không chắc chắn thông tin API GetMessage xuất hiện ở đâu, mặc dù ... –

+0

sheepsimulator: Ý của bạn là gì? Application.Run thiết lập một vòng lặp tin nhắn. Bên trong, nó gọi hàm Get32 của GetMessage' trong một vòng lặp. –

+0

Nhưng sau đó làm cách nào để thêm logic chương trình vào đó. Ví dụ, nếu tôi muốn chương trình liên tục in "Nó hoạt động!" vào một widget (thêm văn bản tôi đã tìm ra, widget.Text + = "Nó hoạt động!";). – Orm

4

Nó được nhập từ Application.Run(Form). Bạn không nhập bất kỳ logic nào trong vòng lặp đó. Nếu bạn cần trả lời đầu vào, hãy thêm trình xử lý sự kiện vào các sự kiện cụ thể vào các điều khiển trên biểu mẫu của bạn. Nếu bạn cần chạy logic định kỳ, hãy sử dụng một trong các lớp Timer.

Kết quả chính của logic trong bơm thông báo trong C++ là sử dụng quá mức/không cần thiết của pin trên máy tính xách tay. Bạn chắc chắn nên bắt đầu xem xét lại các yêu cầu mã thực tế để đáp ứng mục tiêu mục tiêu của bạn, và chúng không nên bao gồm logic chạy liên tục trong một vòng quay.

+0

Được rồi, điều đó giúp tôi một chút, nhưng bây giờ tôi cần biết cách thêm logic chương trình vào vòng lặp đó. Đó là những gì tôi đang cố gắng tìm ra. – Orm

+0

Bạn không. Bạn thêm logic của chương trình vào trình xử lý sự kiện. – Eclipse

0

thử đọc this. Ngôn ngữ không phải là quá rõ ràng, và mã là VB nhưng nó sẽ có được điểm trên.

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