所以目前我有一个有 2 个进程的应用程序。一个进程是 ping,而 ping 进程是将结果写入数组。
另一个过程是使用计时器每秒更新 UI。更准确地说,正在更新的是一个mschart。
这就是我设置计时器的方式:
readonly System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();
myTimer.Interval = 1000;
myTimer.Tick += WriteFunction;
现在这是我每秒调用的方法以刷新 UI/实际图形:
private void WriteFunction(object objectInfo, EventArgs e)
{
foreach (NetPinger.source.AddGraph b in graphList)
{
b.fileRead();
}
}
更新图表的方法在另一个类中,如下所示:
public void fileRead()
{
double unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
chart_holder.Series[0].Points.Clear();
for (double i = unixTimestamp; unixTimestamp - graphSizing < i; i--)
{
bool exists;
try
{
exists = Array.Exists(file, element => element.XValue == i);
exists = true;
}
catch
{
exists = false;
}
try
{
if (exists == false)
{
DataPoint point = new DataPoint(i, 0);
chart_holder.Series[0].Points.Add(point);
}
else
{
DataPoint point = Array.Find(file, element => element.XValue == i);
chart_holder.Series[0].Points.Add(point);
}
}
catch(Exception ex)
{
MessageBox.Show(Convert.ToString(ex));
}
}
}
现在我注意到的是,如果 graphSizing(我循环通过的数字)保持在较低水平,则性能会很好,并且一切都是同步的(来自 UI 的多个图形同时更新等),就像它应该的那样。但是,一旦我上升,让我们说喜欢 50 甚至 250(目标应该是什么),UI 和图形更新就会非常非常缓慢。它只是每 3 秒更新一次,并且用户界面通常非常滞后和缓慢。
有没有人有任何建议我如何保持良好的性能,或者我搞砸了 UI 太慢?如有更多问题或更多详细信息,请随时提问。
哔哔one
相关分类