Vb.net 如何在不使用计时器控制的情况下每x秒运行一个线程

Vb.net 如何在不使用计时器控制的情况下每x秒运行一个线程,vb.net,Vb.net,我必须每秒运行某个线程刷新消息字段,但不使用任何时间控件。我想知道是否有什么替代定时器控制的方法。我的同事可能是背景工作者或类似的人 这就是我目前所拥有的。它应该每秒钟运行一次,但它没有 Private Sub main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim myThread As New System.Threading.Thread(Addre

我必须每秒运行某个线程刷新消息字段,但不使用任何时间控件。我想知道是否有什么替代定时器控制的方法。我的同事可能是背景工作者或类似的人

这就是我目前所拥有的。它应该每秒钟运行一次,但它没有

Private Sub main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim myThread As New System.Threading.Thread(AddressOf GetData)
    myThread.Start()
    Thread.Sleep(1000)
End Sub
这就是他调用的函数:

Delegate Sub SetTextCallback(ByVal newString As String)

Private Sub SetText(ByVal [text] As String)
    If Me.ChatBox.InvokeRequired Then
        Dim d As New SetTextCallback(AddressOf SetText)
        Me.Invoke(d, New Object() {[text]})
    Else
        Me.ChatBox.Text = [text]
    End If
End Sub​

Sub GetData()
    Try
        conn.Open()
        Dim Query = "SELECT * fROM messages where Time_Posted > Now()"
        Dim cmd As MySqlCommand = New MySqlCommand(Query, conn)
        Dim theREader As MySqlDataReader = cmd.ExecuteReader
        SetText("")
        Dim Temp as String = ""
        Do While theREader.Read()
            Temp &= theREader.GetString(0) & vbCrLf
        Loop
        SetText(Temp)
        conn.Close()
    Catch ex As Exception
        MsgBox(ex.Message.ToString())
        conn.Close()
    End Try
 GetData()
End Sub
我想知道是否有任何方法可以让线程在不使用计时器的情况下重复运行

提前感谢您的帮助和建议


这是解决问题后更正的代码

现在我必须在没有任何计时器的情况下进行不停止的进程读取。如果需要,可以添加线程睡眠

将其粘贴到新项目

那么看看这个

Imports System.Threading
Public Class Form1
    Dim testvalue As Integer
    Private Sub main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim myThread As New System.Threading.Thread(AddressOf GetData)
        myThread.Start()
        Thread.Sleep(1000)
    End Sub

    Sub GetData()

        MsgBox("getdata works")

        'get your new data from database here
        'threadsleep here if you want

        'and call   GetData() again 

        GetData()


    End Sub
    '
    '
    '

End Class

你想要不使用计时器计时的东西吗?是的,我想要不使用计时器的东西没有理由吗?睡眠或计时器有什么问题?在没有计时器的情况下,您希望如何每X分钟调用一个函数?问题是不清楚,如果在中有计时器的话,是否有任何替代方法。可能有任何后台运行程序或类似的东西会重新执行,直到from被打开,但当我试图将
myThread.Start()
放入我拥有的函数中时,必须有递归之类的东西,并且错误是它没有声明。我要在那里重新声明吗?我想看看你的全部代码,但我现在正在编辑我的答案。等等。让我试试这一个它的伟大的消息是不断弹出,但消息没有被显示我有一个错误“交叉踏板或无效:控制MessBox访问线程以外的踏板上创建的”这意味着什么我不知道。正如我所说,我对踏板有点陌生。Sorrygood然后尝试创建MessBox刷新程序并从GetData()调用它
Imports System.Threading
Public Class Form1
    Dim testvalue As Integer
    Private Sub main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim myThread As New System.Threading.Thread(AddressOf GetData)
        myThread.Start()
        Thread.Sleep(1000)
    End Sub

    Sub GetData()

        MsgBox("getdata works")

        'get your new data from database here
        'threadsleep here if you want

        'and call   GetData() again 

        GetData()


    End Sub
    '
    '
    '

End Class