控制台。Writeline停止我的程序。。。C#

控制台。Writeline停止我的程序。。。C#,c#,console,C#,Console,我刚刚在Windows Froms C#应用程序中遇到了最棘手的问题 我在调试代码中得到了一些控制台。WriteLine,但突然停止了工作。比如说 try{ line(of.code); Console.WriteLine("HERE"); other.line(of.code); } catch (Exception e) { logger.logg(e.ToString()); } 我将无法进入其他.line(of.code)行,我在控制台中没有得到“HERE” 代

我刚刚在Windows Froms C#应用程序中遇到了最棘手的问题

我在调试代码中得到了一些
控制台。WriteLine
,但突然停止了工作。比如说

try{
   line(of.code);
   Console.WriteLine("HERE");
   other.line(of.code);
}
catch (Exception e)
{
   logger.logg(e.ToString());
}
我将无法进入
其他.line(of.code)行,我在控制台中没有得到“HERE”

代码中有几个地方,所有地方都是这样。它只是停了下来,没有抓住


最糟糕的是,它起作用更早。我在应用程序方面工作了很长时间,从未见过类似的情况。

我能想到一些会导致Console.WriteLine失败的场景:

  • 输出流已被设置为无效对象或行为不正常的对象(在您的情况下,请停止程序)

  • 您运行的环境没有授予您使用console*的权限

  • 它不是System.Console.WriteLine,而是另一个同名的方法,由于一些using指令而被调用

  • *:我想不出这样的环境,但可能是一些插件系统


    如果您正在制作Windows From应用程序,但未设置控制台的输出流,则Console.WriteLine不应执行任何操作。因此,如果您需要调试,请遵循。

    如果您只需要调试,请尝试

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

    这会将输出写入开发环境的输出窗口,更重要的是,无论您开发的应用程序类型如何(控制台应用程序、win forms、web应用程序等),它都会工作


    一旦更改为“release”,调试信息将被忽略,并且不会编译到代码中。如果您在那里也需要它,您应该尝试Trace.Writeline。

    也许您将console输出(使用console.SetOut方法)设置为导致异常的内容?我没有得到异常,它只是无法继续。。。我不使用SetOutMethod。请给我们看以前的代码。如果您试图更改
    Console.WriteLine(“此处”)
    Debug.WriteLine(“此处”)Console.SetOut(sw)更改输出,其中
    sw
    是StreamWriter。如果需要控制台输出,请确保使用的是控制台应用程序。另外,在流程中查找
    .RedirectStandardOutput
    属性-检查是否为正确的输出流设置了该属性。