2012-09-17 94 views
3

我寫了一個C#工具,作爲標準控制檯應用程序運行。在程序結束時,我使用了Console.Read()來防止窗口關閉。這對所有我的同事個人電腦除了一個以外都可以。他從未看到我的申請。它完成了所有的工作,但之後關閉。所有PC運行WinXP。你有什麼主意嗎?控制檯窗口關閉,儘管使用Console.Read()

我實現了一個try-catch-finally,其中最後只包含Console.Read()

編輯:我添加了一些代碼

Console.SetWindowSize(125, 40); 
CopyToolBase ctb = null; 
try 
{ 
    DateTime startTime = DateTime.Now; 
    TimeSpan duration; 

    ctb = CopyToolBase.GetInstance(Defines.configPath); 
    if (null == ctb) 
    { 
     throw new KopiertoolException(); 
    } 

    if (null == ctb.GetNewestVersion()) 
    { 
     throw new KopiertoolException(); 
    } 

    if (!ctb.CheckCopy()) 
    { 
     throw new KopiertoolException(); 
    } 

    if (!ctb.CopyAndUnzip()) 
    { 
     throw new KopiertoolException(); 
    } 

    duration = DateTime.Now.Subtract(startTime); 

    ctb.PrintSuccess("xxxxxxxx"); 
    ctb.PrintInfo("Gesamtdauer: " + ((duration.Hours == 0) ? "" : string.Format("{0:00} Std ", duration.Hours)) + string.Format("{0:00} Min {1:00} Sek", duration.Minutes, duration.Seconds)); 

    startTime = DateTime.Now; 

    if (!ctb.StartTask()) 
    { 
     throw new KopiertoolException(); 
    } 

    duration = DateTime.Now.Subtract(startTime); 

    if (duration.Minutes > 1) 
    { 
     ctb.PrintInfo("Dauer: " + ((duration.Hours == 0) ? "" : string.Format("{0:00} Std ", duration.Hours)) + string.Format("{0:00} Min {1:00} Sek", duration.Minutes, duration.Seconds)); 
    } 
} 
catch (KopiertoolException) 
{ 
    ctb.WriteToLog(); 
} 
catch (Exception ex) 
{ 
    if (ctb == null) 
    { 
     Console.WriteLine("xxxxxxxxx"); 
     Console.WriteLine(ex.ToString()); 
    } 
    else 
    { 
     ctb.PrintError("xxxxxxxxx"); 
     ctb.PrintError(ex.ToString()); 
     ctb.WriteToLog(); 
    } 
}    
finally 
{ 
    Console.Read(); 
} 
+2

一些代碼將是有益的。 –

+0

我會嘗試記錄上次Console.Read(..)上收到的密鑰,以查看在該PC上按下的按鍵,如果這是可能的話。 – Tigran

+0

也許有例外嗎? – Maarten

回答

0

您是否使用了DLL導入方法(或外部庫)在所有CopyToolBase類的任何部分?

如果你是那麼它可能是一個損壞的狀態異常被拋出代碼中的某處,這將不會被正常的try/catch塊捕獲,所以可能會有一個異常,只是託管代碼可以'沒有辦法處理它,只好終止這個過程。

這裏是一個link說明情況:

我知道它是一個長鏡頭,但認爲我只是涵蓋所有的基礎

相關問題