2011-04-18 71 views
1

當異常發生時我要重新啓動所有的處理或啓動主要方法,這另一種方法後:如何調用主要方法或重新啓動應用程序控制臺?

public void DisplayMessage(string message) { 
    Console.WriteLine(message, "Rebuild Log Files"); 
    Console.WriteLine(" Press Enter to finish, or R to restar the program..."); 
    string restart = Console.ReadLine(); 
    if(restart.ToUpper() == "R") { 
     //Call the Main method or restart the app 
    } 
    Console.ReadKey(); 
} 

注:主要的方法中包含了一些用戶寫入的數據。

我該怎麼做?

+0

您可能想編輯您的文章,並使用代碼示例按鈕設置您的代碼的格式。這是帶兩個大括號的那個{} – 2011-04-18 18:12:43

+0

爲什麼要發佈類似的問題兩次? http://stackoverflow.com/questions/5707011/how-call-the-main-method-or-restar-the-app-console – Chandu 2011-04-18 18:13:46

+0

在這部分我需要重新啓動控制檯應用程序,例如:Application.Restart() ,或Main(string [] args);或類似的東西 – ale 2011-04-18 18:15:27

回答

1

好吧,你有一個主

void main(...) 
{ 
    some code 
} 

所有你需要做的是...

void main() 
{ 
    runStartUpCode(); 
} 

void runStartUpCode() 
{ 
    some code 
} 

然後,當你需要重新啓動代碼,調用runStartUpCode(再次)。

+1

這將重新執行啓動代碼,當然......但是這遠不是'重新啓動'應用程序 – 2011-04-18 18:17:33

+0

@Robert當然,但是OP並沒有很清楚他正在試圖做什麼。在他之前的問題中,我們演示瞭如何以編程方式殺死並重新啓動exe,所以此時我決定簡單地弄髒它,看看他是否只是在想它可能? – asawyer 2011-04-18 18:19:08

+0

好男人我想要做這樣的事情:Console.restart()或Application.restart()或Program.Main(string [] args)...這就像我的感覺? – ale 2011-04-18 18:25:33

0
static void Main(string[] args) { 
    try { 
    // code here 
    } catch /* or finally */ { 
    DisplayMessage(/* pass in any state from Main() here */); 
    } 
} 

static void DisplayMessage(/* passed in state from Main() */) { 
    // original DisplayMessage() code 

    // if R was pressed 
    Main(/* put any args to pass to Main() in here */); 
} 
2
if(restart.ToUpper() == "R") { 
    Close(); 
    System.Diagnostics.Process.Start(Application.ExecutablePath); 
} 
+0

這個'Application.ExecutablePath'在哪裏? – crush 2016-05-20 03:11:17

0

其實我剛剛與早期在你閱讀這篇文章的時候這個問題做。我有一種複製原始主要方法,改變了原來的一些選項,並留下副本調用新的主要方法。這是我的意思。

static void Main(string[] args) 
{ 
    Program CallingTheRealMain = new Program(); 
    CallingTheRealMain.Main2(); 
} 

public void Main2() 
{ 
    //Any code here 
} 

我最初需要做到這一點,因爲我需要循環回主方法,但不能因爲它是靜態的。這段代碼對我來說工作得很好,如果你選擇實現它,也希望它對你也有幫助。希望我幫助。快樂的編碼!

0
DialogResult result = MessageBox.Show("Do You Really Want To Logout/Exit?", "Confirmation!", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 
      if (result == DialogResult.Yes) 
      { 
       this.Close(); 
       System.Diagnostics.Process.Start(Application.ExecutablePath); 
      } 
相關問題