我希望找到一种提高代码性能的方法。 我有一个带有TextBox和图形(来自OxyPlot包)的WPF GUI。 我使用了StopWatch来找到代码效率较低的地方,我发现更新TextBox的Text比填充字符串需要更多的时间。例如,如果属性MyText
绑定到TextBox的Text属性,则以下代码部分
Application.Current.Dispatcher.Invoke(()=>{
MyText = currentString;
});
这需要比所有这些花费更多的时间。
StringBuilder sb = new StringBuilder();
RetrieveDataFromDevice();
FillString(sb);
string currentString = sb.ToString();
使用计时器:
Task.Factory.StartNew(() =>
{
var sw = new StopWatch();
sw.Start();
StringBuilder sb = new StringBuilder();
RetrieveDataFromDevice();
FillString(sb);
string currentString = sb.ToString();
Trace.WriteLine(sw.ElapsedMilliseconds.ToString()); //5ms
sw.Restart();
Application.Current.Dispatcher.Invoke(()=>{
MyText = currentString;
});
Trace.WriteLine(sw.ElapsedMilliseconds.ToString()); //10ms
}
由于我每15毫秒只能刷新一次字符串(或图形),因此存在性能问题。有没有办法改善这些性能?