2012-05-24 38 views
5

後,我有一個通常運行作爲計劃任務,所以我的想法是,我會通過在命令參數的任務,使其自動運行Windows窗體。這樣我可以在沒有參數的情況下在本地運行它,以便在必要時手動運行它但是我不太清楚如何在調用Application.Run作爲任務運行時調用新窗體的方法。現在它只是顯示錶單並退出,而不是繼續到i.RunImport()行。有任何想法嗎?這是我的代碼。謝謝。呼籲公衆窗戶方法形成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

如果你的'RunImport'方法不需要對UI的任何訪問,那麼你應該能夠前'應用程序調用'RunImport' .Run' – Gavin

回答

7

寫出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

有趣,非常感謝! –