私のアプリケーションは多くのスレッドで動作し、各スレッドはAddDetailLog関数を使用してスレッドの進行状況をグローバルなtextBoxに追加するので、各スレッドの進行状況に従うことができます。この機能は1秒間に500回以上呼び出すことができます。私はVS2015プロファイラを使用したとき、私のCPUの50%を使用するのはこの関数だとわかりました。私は150スレッド以上をロードすると、私のCPUは100%であるので、私は本当にこの機能を最適化する必要があります。呼び出しログ機能の最適化 - マルチスレッド
マルチスレッドに最適化する機能:マルチスレッドためのもので
public void AddDetailLog(string text)
{
if(Program.SHOWDETAILSLOG)
{
if (this.textBox_log.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(AddDetailLog);
this.Invoke(d, new object[] { text });
}
else
this.textBox_log.AppendText("[" + DateTime.Now.ToString("HH:mm:ss") + "] - " + text + Environment.NewLine);
}
}
、私はスレッド(ないのBackgroundWorker)の全てが同じてtextBoxに作用しているので、私のテキスト入力欄に入力、呼び出しを必要とするかどうかを確認する必要があります私のグローバルフォームに。
誰かがこの機能を最適化する考えがあれば、私はそれを耳にしてうれしく思います。彼らはGDIのメッセージポンプを通じて同期終わるだろうと
おかげ
メッセージを表示することなく(メッセージを表示せずに)バッファを作成し、1秒ごとに起動してそのテキストを「TextBox」に追加するバッファを作成することもできます。または、自分自身に「__really__ need?これらのログメッセージをすべて表示するには? –