0

TraceSwitch機能を使用して、内部で起こっていることのトレースを出力できるようにするサードパーティのコンポーネントがあります。残念ながら、消費者(ファイルへの出力)としてTextWriterTraceListenerを使用してスイッチを冗長モードで実行すると、アプリケーションの速度が大幅に低下します。

トレースされたデータがすぐに書き込まれることは重要ではないので、優先度の低いスレッドにデータを書き込む方法はありますか?おそらくタスク?

編集

さらに調査すると、リスナーを接続せずにスイッチをオンにするだけで速度が低下するようです。コンポーネントプロバイダーを入手します。

それでも答えを聞くのは面白いでしょう。

4

1 に答える 1

1

TraceListenerに独自の拡張機能を記述します。拡張機能では、すべてのトレース文字列をList <string>に配置し、カウントが十分に高くなったら、リストをファイルに書き出し、リストをクリアして再開します。Dispose()でリストをフラッシュします。

これを簡単に拡張して、スレッドプールを使用して新しいタスクをキューに入れ、実際の書き込みを行うことができます。

これは、パフォーマンスが向上することを保証するものではありません。速度を低下させているのがIOであることが確実な場合にのみ役立ちます。

于 2010-11-16T19:03:24.590 に答える