gpt4 book ai didi

c# - wpf 中调度程序计时器的性能

转载 作者:行者123 更新时间:2023-11-30 17:02:45 25 4
gpt4 key购买 nike

我有一个 WPF 应用程序,它监视某些进程并将它们的 CPU 和内存利用率绘制成折线图。使用性能计数器类 C# 读取 CPU% 和内存值。该图还是一个包含 CanvasUserControl,我根据获取的值在其中手动绘制线条。

目前,我在每个 Graph UserControl 中使用 Dispatcher 计时器,并且在每个 tick 中我都获取新值并绘制它。

问题是,随着我添加越来越多的要监视的进程,我的应用程序会占用 CPU,因为有很多更新正在发生。

实现我正在尝试的目标的更好方法是什么?每个过程的详细信息都在单独的选项卡中,并且仅在加载时才会初始化,但是当我不想要连续的绘图时,在没有 View 时停止图。

有更好的方法吗?

最佳答案

您可以尝试使用 Reactive Extensions Timer。

private IDisposable timerSubscription;

public void StartTimer()
{
timerSubscription = Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(1), Scheduler.TaskPool)
.ObserveOnDispatcher()
.Subscribe(o =>
{
Console.WriteLine("Hooray I'm ticking on TaskPool for {0} times!", o);
}
}

/// and you can stop timer like this
public void StopTimer()
{
using (timerSubscription)
{

}
}

关于c# - wpf 中调度程序计时器的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19396311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com