2012-09-11 44 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