我的應用程序使用了很多線程,每個線程都使用我的AddDetailLog函數在全局文本框中添加線程的進度,所以我可以按照每個線程的進度進行操作。這個函數每秒可以調用500次以上,當我使用VS2015 Profiler時,我已經看到使用我的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);
}
}
,因爲多線程的事情,我需要檢查,如果我的textBox需要一個調用,因爲所有的線程(不是BackgroundWorker的)的作用在相同的textBox在我的全球形式。
如果有人有任何想法來優化這個功能,我會很高興聽到它。
感謝
你可以創建一個緩衝區來存儲消息(不顯示它們),然後有一個計時器每隔1秒觸發一次以將其附加到「TextBox」....或問自己,「我是否需要看到所有這些日誌消息?「 –