C# 高效跳过控制台写行



A C# .NET exe (4.6.1) 通过调用执行 Console.Writeline 的方法输出大量状态。如此之多,以至于它明显减慢了执行速度。第一个想法是添加一个布尔值和/或不在基于值的调用方法中执行 Writeline。但是,如果 exe 执行 4000 个写入行,那就是 4000 个检查,这似乎太多了。

使

输出短路的好方法是什么?一种以某种方式将 Console.SetOut 设置为空的方法?

谢谢。

您可以使用委托来解决此问题,尽管我确信检查布尔值可能比Console.WriteLine()快得多。

向类添加委托:

public delegate void Output(string message);

然后在应用程序开始时,您可以检查您的 bool 并根据您是否要实际写入来分配要运行的方法。

bool logInformation = true;
if(logInformation)
{
    ProcessInformation((s) => { Console.WriteLine(s); });
}
else
{
    ProcessInformation((s) => { });
}

最后将委托添加到处理方法的方法签名中。

private void ProcessInformation(Output logger)
{
    // doing stuff, time to write
    logger("test");
}

你需要用logger()替换你的Console.WriteLine调用,但这将允许你运行东西,而不必担心每次都检查布尔值。也就是说,我不知道它是否真的比每次检查布尔值更快,但可能更容易实现和维护。

要回答您的确切问题:

Console.SetOut(TextWriter.Null);

但是,System.Diagnostics TraceEvent 调用使您可以更精细地控制要输出的内容。例如,在生产中,您只能输出"错误"消息,而在开发中,您可以输出详细日志。https://msdn.microsoft.com/en-us/library/system.diagnostics.tracesource.traceevent(v=vs.110).aspx

相关内容

  • 没有找到相关文章

最新更新