0

この質問と重複する質問はたくさんありますが、実際に私の特定の問題に答えているものはありません。

IRC ボットを作成しています。以下のコードでわかるように、ユーザーを List(Of String) に追加しています。ただし、別のスレッドでユーザーの foreach ループを実行したい場合、タイトルにエラーが表示されます。ユーザーの追加を停止するためにブール値を配置しましたが、何らかの形で変更されているとまだ言われています。どんな助けでも大歓迎です。

(コードを読む前に、私は VB.net を初めて使用することを覚えておいてください。たとえそれが乱雑であっても、私は初心者なので、それで非難されたくありません)

Sub Handler()
    handlerActive = True
    Dim list As New List(Of String)
    query = "SELECT * FROM " & channel.Substring(1)
    Try
        connHost.Close()
    Catch
    End Try
    connHost.Open()
    Dim cmd As MySqlCommand = New MySqlCommand(query, connHost)
    Dim dataReader As MySqlDataReader = cmd.ExecuteReader()

    While (dataReader.Read())
        list.Add(dataReader.GetString(1))
    End While
    dataReader.Close()
    If (users.Count > 0) Then
        For Each user2 In users
            Try
                connHost.Close()
            Catch ex As Exception
            End Try
            connHost.Open()

            query = ("UPDATE `" & channel.Substring(1) & "` SET `Amount` = Amount + 1 WHERE `Username`='" & user2 & "'")
            cmd = New MySqlCommand(query, connHost)
            Try
                cmd.ExecuteNonQuery()
            Catch
                Console.WriteLine("Failed to update user - " & user2)
            End Try
        Next
    End If
    connHost.Close()
    handlerActive = False
End Sub

以下は、「users」という名前のリストにユーザーを追加する場所です

If (handlerActive = False And users.Contains(user) = False And user.Trim().CompareTo("") <> 0 Or user.Trim().CompareTo("jtv") <> 0 Or user.Trim().Contains(" ") = False Or user.Trim().Contains(".") = False) Then
        users.Add(user)
End If
4

0 に答える 0