Performance Counter - Win32 Exception



  • Ich wollte da mit dem Performance Counter die CPU-Auslastung anzeigen lassen, mittels folgendem Code:

    private void timer1_Tick(object sender, EventArgs e)
            {
                progressBar1.Value = (int)performanceCounter1.NextValue();
            }
    

    Bei MachineName ist der Punkt eingetragen, ansonsten die üblichen Werte (Kategorie Prozessor usw).
    das ergibt mir aber folgende Exception:

    System.ComponentModel.Win32Exception was unhandled
      Message="%1 ist keine zulässige Win32-Anwendung"
      Source="System"
      ErrorCode=-2147467259
      NativeErrorCode=193
      StackTrace:
           bei System.Diagnostics.CounterSampleCalculator.LoadPerfCounterDll()
           bei System.Diagnostics.CounterSampleCalculator.ComputeCounterValue(CounterSample oldSample, CounterSample newSample)
           bei System.Diagnostics.CounterSample.Calculate(CounterSample counterSample, CounterSample nextCounterSample)
           bei System.Diagnostics.PerformanceCounter.NextValue()
           bei netTaskmanager.Form1.timer1_Tick(Object sender, EventArgs e) in D:\C-Programme\netTaskmanager\netTaskmanager\Form1.cs:Zeile 52.
           bei System.Windows.Forms.Timer.OnTick(EventArgs e)
           bei System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
           bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
           bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
           bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
           bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
           bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
           bei System.Windows.Forms.Application.Run(Form mainForm)
           bei netTaskmanager.Program.Main() in D:\C-Programme\netTaskmanager\netTaskmanager\Program.cs:Zeile 17.
           bei System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
           bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
           bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
           bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           bei System.Threading.ThreadHelper.ThreadStart()
    

    Was ist denn hier falsch??

    Danke



  • Er kann vermutlich die perfcounter.dll nicht laden, Zugriffsrechte fehlen oder die Datei fehlt oder ist defekt.
    Ich würde mal versuchen das entsprechende .NET-Framework neu zu installieren...

    (Die perfcounter.dll gehört zum .NET-Framework, liegt meistens in "C:\WINDOWS\Microsoft.NET\Framework\{.net-version}\perfcounter.dll")



  • Danke! In dem Fall werde ich das Projekt mal auf meinem PC ausprobieren. Bei dem auf dem ich es probiert habe ist das Windows so ziemlich mühsam...


Anmelden zum Antworten