0

几年前我写了一个简单的 VB 应用程序,它使用一个计时器来调用 2 个 PerformanceCounters,一个用于检测磁盘读取,另一个用于检测磁盘写入。该信息用于相应地更改托盘图标,使其类似于计算机机箱上的 HDD LED。它多年来一直工作得非常好,直到最近它开始抛出 InvalideOperationException.:

“DriveTray.exe 中发生了‘System.InvalidOperationException’类型的未处理异常

附加信息:创建表单时出错。有关详细信息,请参阅 Exception.InnerException。错误是:输入字符串的格式不正确。”

这就是给出的所有信息。我不知道这意味着什么,也找不到任何相关的在线帮助。我正在运行 Windows 10,最近在更新图标时使用 Visual Studio 2015 重新编译/重新发布,但它仍然运行良好。这种行为仅在最后一两天才开始。我重新安装了 VS,认为其中一个库可能以某种方式损坏,但这没有用。由于多年来我没有更改任何代码,我什至不知道在哪里看。

这是我的代码:

公共类 frmDriveTray

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 > 0) Then
        both += 1
    End If
    If (Me.pcLogicalDiskWrite.NextValue > 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

结束类

4

0 回答 0