2012-01-08 35 views
8

Tôi đã đặt một số mã bên trong công khai MainWindow() {} nhưng tôi vẫn nhận được một số lỗi phân tích XAML tối nghĩa ngay khi tôi làm điều đó (không phải trên máy tính của tôi mà trên 3 người khác tôi đã thử nó trên - yep!)Làm thế nào để chạy mã ngay khi một ứng dụng C# bắt đầu?

Có cách nào ưu tiên để chạy mã AS SOON khi ứng dụng của anh bắt đầu không?

Lý thuyết là tôi muốn gọi điện về nhà và yêu cầu khởi động. Nếu không, tôi muốn ứng dụng đóng lại. Gọi nó là một bản sao tạm thời bảo vệ :)

+1

Bạn đang nói về công nghệ nào? cửa sổ hình thức? asp.net các hình thức web? asp.net mvc? wpf? – balexandre

+0

@balexandre, câu hỏi hay. Đoán/giả định của tôi là WPF, do các thẻ được sử dụng và các lỗi XAML được đề cập và chạy nó trên các máy tính khác nhau. – Lucero

+1

@Lucero, thẻ 'wpf' được thêm vào bởi tôi, bởi vì nói về lỗi XAML và' MainWindow'. – svick

Trả lời

19

Trong trường hợp bình thường, WPF tạo phương thức Main (điểm nhập của ứng dụng) cho bạn. Các tùy chọn của bạn

  • Tạo một trình xử lý cho sự kiện Application.Startup và đặt mã của bạn ở đó. Ngoài ra, bạn có thể ghi đè phương thức OnStartup().
  • Nếu đã quá muộn đối với bạn, hãy đặt mã của bạn vào hàm tạo không tham số của App (có thể không tồn tại, nhưng bạn có thể tạo nó).
  • Nếu thậm chí đã quá muộn, bạn có thể tạo phương thức Main() của riêng mình. There are several ways how to do that. Có lẽ cách dễ nhất là đặt nó vào một lớp khác và nói với Visual Studio bạn muốn sử dụng phương thức này trong thuộc tính của dự án.

Mặt khác, bạn cho biết bạn đang gặp một số lỗi phân tích cú pháp XAML tối nghĩa. Có lẽ bạn nên tìm ra chính xác những gì họ có ý nghĩa?

0

Bạn có Window.Loaded sự kiện trong WPF.

Nhưng nếu nếu bạn muốn kiểm tra cho chạy phép trước khi tải ứng dụng (do một số consuption tài nguyên hoặc một số chiến lược kinh doanh) sử dụng một bootstrapper một riêng biệt nhỏ executable rằng lần đầu tiên đưa ra bởi mainexe và sau nếu mọi thứ ok một bootstrapper chạy main exe

+0

'Window.Loaded' được gọi ngay cả sau công cụ xây dựng' Window', mà OP nói quá muộn. – svick

+0

@svick: không thấy điểm "quá muộn". OP nói rằng anh ấy muốn chạy séc * ngay khi ứng dụng * bắt đầu. Vì vậy, có, imo, một tùy chọn "bình thường" là bắt 'Window.Loaded' hoặc sử dụng một' bootstrapper', đó là phức tạp hơn để thực hiện, nhưng có lẽ những gì OP muốn thực sự. – Tigran

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