2012-05-24 16 views
5

Tôi có một biểu mẫu cửa sổ thường sẽ chạy như một tác vụ được lập biểu để suy nghĩ của tôi là tôi sẽ chuyển các đối số lệnh trong nhiệm vụ để làm cho nó chạy tự động. Bằng cách đó tôi có thể chạy nó cục bộ mà không có đối số để tự chạy nó nếu cần thiết. Nhưng tôi không hoàn toàn chắc chắn làm thế nào để làm cho nó gọi phương thức của hình thức mới sau khi gọi Application.Run khi nó chạy như một nhiệm vụ. Ngay bây giờ nó chỉ hiển thị biểu mẫu và thoát khỏi đó thay vì sau đó tiếp tục đến dòng i.RunImport(). Bất kỳ ý tưởng? Đây là mã của tôi. Cảm ơn.gọi phương thức công khai trên windows form sau khi application.run

static void Main(string[] args) 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    if (args.Length > 0) 
    { 
     if (args.Any(x => x == "run=1")) 
     { 
      var i = new Importer(); 
      Application.Run(i); 
      i.RunImport(); 
     } 
    } 
    else 
    { 
     Application.Run(new Importer()); 
    } 
} 
+1

Nếu 'phương pháp RunImport' của bạn không đòi hỏi bất kỳ quyền truy cập vào giao diện người dùng, sau đó bạn sẽ có thể gọi' RunImport' trước khi 'Ứng dụng .Run' – Gavin

Trả lời

7

Viết một xử lý sự kiện cho sự kiện Form.Load:

static void Main(string[] args) 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    if (args.Length > 0) 
    { 
     if (args.Any(x => x == "run=1")) 
     { 
      var i = new Importer(); 
      // modify here 
      i.Load += ImporterLoaded; 
      Application.Run(i); 

      // unsubscribe 
      i.Load -= ImporterLoaded; 
     } 
    } 
    else 
    { 
     Application.Run(new Importer()); 
    } 
} 

static void ImporterLoaded(object sender, EventArgs){ 
    (sender as Importer).RunImport(); 
} 
+1

Thú vị, cảm ơn rất nhiều! –

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