スレッドから進行状況バーに CPU 使用率を更新するためのルックを実行しようとしています。
ここにあるコードは次のとおりです。
private static int _cpuUsage;
protected PerformanceCounter cpuCounter;
private Thread thread;
public CPUUsageIndModel()
{
cpuCounter = new PerformanceCounter
{CategoryName = "Processor", CounterName = "% Processor Time", InstanceName = "_Total"};
thread = new Thread(GetCurrentCpuUsage);
thread.Start();
}
public void GetCurrentCpuUsage()
{
while (true)
{
_cpuUsage = Convert.ToInt32(Math.Round(cpuCounter.NextValue()));
Thread.Sleep(1000);
}
}
public int GetCPUUsage
{
get { return _cpuUsage; }
set
{
_cpuUsage = value;
NotifyPropertyChanged("_cpuUsage");
}
}
今問題は、スレッドを開始しようとしたことです:
public void GetCurrentCpuUsage()
{
_cpuUsage = 40;
}
そしてそれは正常に動作するので、cpuCounter
and ループを使用したままにします。
誰でも私が犯した可能性のある間違いを指摘できますか.
ありがとう
編集 - 完全なクラスといくつかの微調整:
public class CPUUsageIndModel : INotifyPropertyChanged
{
public static int _cpuUsage;
protected PerformanceCounter cpuCounter;
private Thread thread;
public CPUUsageIndModel()
{
cpuCounter = new PerformanceCounter
{CategoryName = "Processor", CounterName = "% Processor Time", InstanceName = "_Total"};
thread = new Thread(GetCurrentCpuUsage);
thread.Start();
}
public void GetCurrentCpuUsage()
{
while (true)
{
CPUUsage = Convert.ToInt32(Math.Round(cpuCounter.NextValue()));
Thread.Sleep(1000);
}
}
public int CPUUsage
{
get { return _cpuUsage; }
set
{
_cpuUsage = value;
NotifyPropertyChanged("_cpuUsage");
}
}
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
#endregion
}