2012-09-11 78 views
1

我剛剛拿到了wierdest問題在我的Windows櫨C#應用程序Console.Writeline停止我的程序... C#

我在調試的代碼獲得了一些Console.WriteLine,但這種突然停止工作。例如

try{ 
    line(of.code); 
    Console.WriteLine("HERE"); 
    other.line(of.code); 
} 
catch (Exception e) 
{ 
    logger.logg(e.ToString()); 
} 

我不會給other.line(of.code);行,我沒有得到在控制檯的「這裏」。

代碼中有幾個地方,它們都發生了相同的情況。它只是停止,它不會趕上...

而最糟糕的是,它的工作更早。我長期從事應用程序工作,從未見過類似的應用程序。

+3

錯誤是什麼意思? –

+0

也許你將控制檯輸出(使用Console.SetOut方法)設置爲支持異常的東西? – Theraot

+0

我沒有得到任何異常,它只是不能繼續......而且我不使用SetOutMethod。 – Nick3

回答

4

如果你需要它只是用於調試,試

System.Diagnostics.Debug.Writeline("HERE"); 

代替。

這將輸出寫入到開發環境的輸出窗口,更重要的是,它會工作無關的應用程序正在開發的類型(控制檯應用程序,贏得形式,Web應用程序等)。

只要您更改爲「發佈」,調試信息將被忽略並且不會編譯到代碼中。如果你還需要它,你應該嘗試使用Trace.Writeline。

+0

這很好,但它早期工作起來還是很奇怪的:P – Nick3

+0

確實......請注意,您可以通過'Console.SetOut(sw);'更改輸出,其中'sw'是一個StreamWriter。如果您需要控制檯輸出,請確保您使用的是控制檯應用程序。另外,請在您的流程中查找'.RedirectStandardOutput'屬性 - 檢查它是否設置爲正確的輸出流。 – Matt

2

我能想到的幾個方案,將導致Console.WriteLine失敗:

  1. 輸出流已被設置爲一個無效的對象或東西,將行爲不端(在你的情況下停止程序) 。

  2. 您正在運行的環境中不允許您使用控制檯*。

  3. 它不是System.Console.WriteLine,而是由於某些使用指令而被調用的另一個具有相同名稱的方法。

*:我想不出這樣的環境,但可能是一些插件系統?

如果您正在製作Windows Froms應用程序,並且未爲您的控制檯設置輸出流,則Console.WriteLine應該不執行任何操作。所以,如果您需要調試,請按照Matt's recomendation