繁体   English   中英

出现错误 CS1503:“参数 1:无法从 'System.Diagnostics,PerformanceCounter' 转换为 'int'

[英]Getting Error CS1503: "Argument 1: Cannot convert from 'System.Diagnostics,PerformanceCounter' to 'int'

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

这是我打算显示硬件统计信息的 window 背后的代码

监视器.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()))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM