我有一个输出到TextBox的TextWriter。 我已将TextWriter连接到Console.Out:
// set application console output to the output text box
Console.SetOut(TextWriter.Synchronized(new TextBoxWriter(this)));
class TextBoxWriter : TextWriter
{
public override void WriteLine(string value)
{
// output to text box
}
}
这很好但是我发现.NET框架本身正在将跟踪/调试输出写入控制台,因此也就是我的窗口!
例如,用户可以单击在表单上创建控件的按钮。这将输出如下内容:
170,130 0,0
调用堆栈显示正在从外部代码调用textwriter WriteLine函数以响应MyForm.Controls.Add(...);
如果用户调整控件的大小,那么.NET框架将以下废话写入控制台:
0.574257425742574 @ 1
调用堆栈显示正在从外部代码调用textwriter WriteLine函数以响应MyControl.Width = NewValue;
当我的应用程序构建用于调试和发布时,会发生这种情况。
我没有打开跟踪或调试功能。
即使没有定义DEBUG和TRACE,也会发生这种情况。
我的应用程序未提及或执行与调试或跟踪相关的任何操作。
我没有对控制台做任何其他事情。
我的应用程序不会在System.Diagnostics中调用任何内容。
使用C#,. NET 4.0,Windows 7 64位,Visual Studio 2010。
这让我发疯了。有关下一步尝试的建议吗?