c#怎么让cpu占用率实时显示在progressbar
读取的代码能读,但是实时显示有问题
帮忙回答下呗
你说能读,俺们就不管了读的了,只管负责显示
private void Form1_Load(object sender, EventArgs e)
{
Progress<int> progress = new Progress<int>();
progress.ProgressChanged += Progress_ProgressChanged;
//获取一般是个线程,task,或者是啥timer,这个我们不管
//现在我就假定是个task,一秒刷一次
getcpu(progress, SynchronizationContext.Current);
}
private void Progress_ProgressChanged(object sender, int e)
{
this.progressBar1.Value = e;
}
async Task getcpu(IProgress<int> progress, SynchronizationContext SyncContext, CancellationToken cancellationToken = default)
{
//你怎么获取cpu我不管了,我这里就随机好了
Random rad = new Random(DateTime.Now.Millisecond);
while (!cancellationToken.CanBeCanceled)
{
cancellationToken.ThrowIfCancellationRequested();
int value = rad.Next(1, 100);
SyncContext.Post(p =>
{
progress.Report((int)p);
}, value);
await Task.Delay(TimeSpan.FromSeconds(1));
}
}