Обновление интегрального значения в HashTable - PullRequest
0 голосов
/ 13 июня 2018

У меня есть таймер, работающий каждую секунду, и я планирую проверять каждый тик этого таймера.

У меня есть хеш-таблица с двумя целыми числами, значение, которое я пытаюсь установить как время.Каждый раз, когда срабатывает таймер, он добавляет 1 к значению того, что было ранее.

Я пытался изменить hashtable непосредственно в моем операторе For each, что я также пытался создать новыйhash table, в котором хранится ключ и новое время, которым он будет, и после этого задайте значения.Но при этом ссылка на объект не устанавливается на экземпляр объекта, что не имеет смысла, поскольку существует проверка, чтобы убедиться, что он не нулевой.

Код

    Private Sub expiryTimer_Tick(sender As Object, e As EventArgs) Handles expiryTimer.Tick
    Dim toRemove As List(Of Integer)
    Dim toSet As Hashtable

    'Loop through active table
    If Active IsNot Nothing Then
        For Each key In Active
            If Active(key) >= 10 Then
                toRemove.Add(0)
            Else
                toSet.Add(key, Active(key) + 1)
            End If
        Next
    End If

    'Set Values
    If toSet IsNot Nothing Then
        For Each value In toSet
            Active(value) = toSet(value)
        Next
    End If

    'Remove Values
    If toRemove IsNot Nothing Then
        For Each value In toRemove
            Active.Remove(value)
        Next
        toRemove.Clear()
    End If


End Sub

1 Ответ

0 голосов
/ 13 июня 2018

У вас есть только проверки для «Активных», но не для этих локальных переменных

Dim toRemove As List(Of Integer)
Dim toSet As Hashtable

Попробуйте еще раз с инициализированными переменными

Dim toRemove As New List(Of Integer)
Dim toSet As New Hashtable
...