私は、RichTextBox
を使って色付きテキストを持つログウィンドウを作った。RichTextBoxログの書き込みパフォーマンスを改善する方法
ボタンを押してShow()
を呼び出すまでは、起動時にはHide()
が隠れています。
私はTextBlock before
を使用していましたが、テキストを選択できませんでしたので、RichTextBox
に切り替えました。ほとんど瞬時になる前に、終了時間が5秒増加しました。
プログラムの終了時まで、書き込み速度を向上させるか、すべてのメッセージの書き込みを延期するにはどうすればよいですか?
私が使用してログに何度も書くプログラムを通して:
public partial class MainWindow : Window
{
public Paragraph paragraph = new Paragraph();
public MainWindow()
{
InitializeComponent();
}
public void MyMethod() {
rtbLog.Document = new FlowDocument(paragraph);
paragraph.Inlines.Add(new LineBreak());
paragraph.Inlines.Add(new Bold(new Run("Log Message Example")) { Foreground = Brushes.Blue });
paragraph.Inlines.Add(new LineBreak());
paragraph.Inlines.Add(new Run("Log Message Example 2") { Foreground = Brushes.White });
this.DataContext = this;
}
}
<RichTextBox x:Name="rtbLog" HorizontalAlignment="Left" VerticalAlignment="Top"
Width="600" Height="400" Margin="246,10,0,0" Padding="10"
FontFamily="Consolas" Background="#FF000000"
Foreground="White" VerticalScrollBarVisibility="Auto"
IsReadOnly="True" IsUndoEnabled="False"/>
を私はIsUndoEnabled="False"
とTextOptions.TextFormattingMode="Display"
を使用して試してみたの速度を向上させるために、それは1秒で時間が減少している可能性があります。
ここで、リッチテキストボックスコンテンツのバインディングはありますか。 'Show()'のときに、 'StringWriter'のようなバッファに書き込んで、すべてのテキストをrichtextboxに書き出すことをお勧めします。 –
あなたはリストに書き込んで、必要なときにログウィンドウを開いて隠しておくのではなく、明日の回答を書くことができますが、今は窓の電話をしています。 – TheLethalCoder
@ M.kazemAkhgary私はちょうどそれをC#から.Inlines.Add()を使って直接書く。 StringWriterはブッシュの色情報を保存しますか? –