2013-02-10 21 views
1

我想提取程序中两个特定点之间出现的控制台输出部分,并将其存储到一个变量中。这将在多次循环中执行。没有必要将输出回显到常规控制台(如果这样可以提高效率)。如何将控制台输出提取到两点之间的变量中?

foreach (Procedure p in procedures) { 
    BeginCapturingConsoleOutput(); 

    p.Execute(); 

    string procedureOutput = EndCapturingConsoleOutput(); 
} 

回答

1

此页MSDN上的代码做我认为你正在寻找的东西: http://msdn.microsoft.com/en-us/library/16f09842.aspx

基本上,它设置输出流,你定义的东西(的情况下例如,一个文件),执行一些操作,并在最后将其设置回标准输出流。

+0

太棒了!这很容易实现我需要的东西。我正在环顾'System.Diagnostics.Process'类,它似乎为衍生进程提供了类似的功能,但不是当前进程。 'Console.SetOut'就像一个魅力:-) – 2013-02-11 00:08:43

+0

下面是一个未来的读者可能会感兴趣的例子:http://pastebin.com/s10fZ0XE – 2013-02-11 00:18:15