title: PerformanceCounter VB app with timer throws System.InvalidOperationException
body: <p>I wrote a simple VB app years ago that uses a timer to call 2 PerformanceCounters, one to detect disk reads and the other for disk writes. That information is used to change a tray icon accordingly so it acts like an HDD LED on a computer case. It has worked fabulously for years, until recently it started throwing an InvalideOperationException.:</p>
  
  <p>"An unhandled exception of type 'System.InvalidOperationException' occurred in DriveTray.exe</p>
  
  <p>Additional information: An error occurred creating the form. See Exception.InnerException for details.  The error is: Input string was not in a correct format."</p>
  
  <p>That's all the information given. I have no clue what it means, and can't find any online help that's relevant. I'm running Windows 10 and recently recompiled/republished using Visual Studio 2015 when I updated the icons, but it still worked fine. This behavior has started only in the last day or two. I reinstalled VS thinking maybe one of the libraries got corrupted somehow, but that didn't work. Since I haven't changed any of the code for years, I don't even know where to look.</p>
  
  <p>Here's my code:</p>
  
  <p>Public Class frmDriveTray</p>
  
  <pre><code>Private Sub Timer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer.Tick
      Dim both As Integer = 0
      If (Me.pcLogicalDiskRead.NextValue &gt; 0) Then
          both += 1
      End If
      If (Me.pcLogicalDiskWrite.NextValue &gt; 0) Then
          both += 2
      End If
      Select Case both
          Case 0  'no activity
              Me.NotifyIcon.Icon = My.Resources.icoCLOUDS
          Case 1  'reading
              Me.NotifyIcon.Icon = My.Resources.icoGREEN
          Case 2  'writing
              Me.NotifyIcon.Icon = My.Resources.icoRED
          Case 3  'reading and writing
              Me.NotifyIcon.Icon = My.Resources.icoAMBER
      End Select
  End Sub
  
  Private Sub mnuExit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnuExit.Click
      Me.NotifyIcon.Visible = False
      Me.NotifyIcon.Dispose()
      Me.Timer.Dispose()
      Application.Exit()
  End Sub
  
  Private Sub frmDriveTray_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      Me.mnuRunAtStartup.Checked = My.Settings.RunAtStartup
      Me.NotifyIcon.Icon = My.Resources.icoIRIDESCENT
      Me.NotifyIcon.Visible = True
      Me.NotifyIcon.Text = "1.1.0.10"
      Me.Hide()
  End Sub
  
  Private Sub mnuRunAtStartup_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnuRunAtStartup.Click
      Dim key As Microsoft.Win32.RegistryKey
      key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
      If Me.mnuRunAtStartup.Checked = True Then
          key.SetValue(Application.ProductName, Application.ExecutablePath)
      Else
          If key.GetValue(Application.ProductName) Is Nothing Then
              key.Close()
          Else
              key.DeleteValue(Application.ProductName)
          End If
      End If
      My.Settings.RunAtStartup = Me.mnuRunAtStartup.Checked
  End Sub
  </code></pre>
  
  <p>End Class</p>