0

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

コール スタックは、テキストライターの WriteLine 関数が、MyForm.Controls.Add(...); に応答して外部コードから呼び出されていることを示しています。

ユーザーがコントロールのサイズを変更すると、次のようなナンセンスが .NET フレームワークによってコンソールに書き込まれます。

0.574257425742574 @ 1

コール スタックは、テキストライターの WriteLine 関数が、MyControl.Width = NewValue; に応答して外部コードから呼び出されていることを示しています。

これは、アプリケーションがデバッグおよびリリース用にビルドされているときに発生します。

トレースまたはデバッグ機能をオンにしません。

DEBUG と TRACE が定義されていない場合でも発生します。

私のアプリケーションは、デバッグまたはトレースに関連することを言及したり実行したりしません。

コンソールでは他に何もしません。

私のアプリケーションは、System.Diagnostics で何も呼び出しません。

C#、.NET 4.0、Windows 7 64 ビット、Visual Studio 2010 を使用。

これは私を夢中にさせています。次に何を試すかについて何か提案はありますか?

4

0 に答える 0