C# 获取错误CS1503:“;参数1:无法从';系统诊断、性能计数器和x27;至';int';

C# 获取错误CS1503:“;参数1:无法从';系统诊断、性能计数器和x27;至';int';,c#,wpf,visual-studio-code,C#,Wpf,Visual Studio Code,我正在VSCode上用WPF编写一个基于UI的应用程序。我试图让硬件性能规格更新UI上的标签,但当我试图将CPU总使用量从PerformanceCounter移交给BackgroundWorker,以便它可以在单独的线程中相应地更新UI时,遇到了错误 下面是我打算显示硬件统计信息的窗口后面的代码 Monitor.xaml.cs public partial class Hostile_Monitor : Window { readonly BackgroundWorker

我正在VSCode上用WPF编写一个基于UI的应用程序。我试图让硬件性能规格更新UI上的标签,但当我试图将CPU总使用量从PerformanceCounter移交给BackgroundWorker,以便它可以在单独的线程中相应地更新UI时,遇到了错误

下面是我打算显示硬件统计信息的窗口后面的代码

Monitor.xaml.cs

public partial class Hostile_Monitor : Window
    {
        readonly BackgroundWorker bgWorker = new BackgroundWorker();

        PerformanceCounter PerfCPUCounter = new PerformanceCounter("Processor Information", "% Processor Time", "_Total");
        PerformanceCounter PerfCPUFreqCounter = new PerformanceCounter("Processor Information", "Processor Frequency", "_Total");
        PerformanceCounter PerfMemCounter = new PerformanceCounter("Memory", "Available MBytes");

        public Hostile_Monitor()
        {
            InitializeComponent();

            //Create Backgroundwroker Object
            bgWorker = new BackgroundWorker();
            //Add DoWork EventHandler
            bgWorker.DoWork += BackgroundWorker1_DoWork;
            //Progress changed EventHandler
            bgWorker.ProgressChanged += BackgroundWorker1_ProgressChanged;
            //RunWorkerCompleted EventHandler
            //bgWorker.RunWorkerCompleted += BackgroundWorker1_RunWorkerCompleted;
            //Allow to be cancelled
            bgWorker.WorkerSupportsCancellation = true;
            //allow to report progress
            bgWorker.WorkerReportsProgress = true;

            private void BackgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        { 
            for (int i = 1; i > 0; i++)
            {
                Console.WriteLine(i);
                bgWorker.ReportProgress(PerfCPUCounter);  // This line is where the error occurs @->(PerfCPUCounter);
                System.Threading.Thread.Sleep(500);

                if (bgWorker.CancellationPending)
                {
                    Console.WriteLine("Thread is exiting...");
                    break;
                }
            }
         }

        private void BackgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            this.Label1.Content = e.ProgressPercentage;

        private void ButtonPower_Click(object sender, RoutedEventArgs e)
        {
            if (bgWorker.IsBusy)
            {
                bgWorker.RunWorkerAsync();
                ButtonPower.Content = "Stop Monitor";
            } else
            {
                bgWorker.CancelAsync();
                ButtonPower.Content = "Start Monitor";
            }
这是我第一次尝试开发桌面应用程序,因此任何提示都将不胜感激 希望我包含了所有必要的代码,让你们了解正在发生的事情

试试下面这个:

bgWorker.ReportProgress((int)Math.Round( PerfCPUCounter.NextValue()))

我尝试实现您的修复程序,但它在同一位置抛出了另一个错误(inti=1;I>0;I++){Console.WriteLine(I);bgWorker.ReportProgress(PerfCPUCounter.NextValue());//错误在这里持续@->(PerfCPUCounter.NextValue())@HostileOperator我更新了我的答案,请再试一次。这解决了我遇到的错误,谢谢!我感谢你的帮助!现在来了解如何使用统计信息更新标签!