0

好吧,我想我不是第一个问这个问题的人,但是在 VB.NET 中使用线程的最简单方法是什么?我的意思是,我需要从远程服务器下载一些字符串,然后在 GUI 中显示该字符串,所以我必须使用一些回调函数在主线程中调用它。我为此找到了不同的方法,但与 Python 相比,所有方法似乎都非常困难,其中(使用 GTK)我使用了类似的东西:

gobject.idle_add(callback_function, parameters)

并且“callback_function”在主线程中执行。我如何在 VB.NET 中做到这一点?

4

1 回答 1

3

这是一个简单的例子。它可能比其他一些语言更难一些,但它仍然不是非常复杂。以下代码假定它在表单类中(如果不是,您需要使用一些控件或表单引用来调用Invoke):

 Private Sub beginDoWork()
     Dim thread As New Thread(AddressOf DoWork)
     thread.Start()
 End Sub

 Public Sub DoWork()
     Dim result As String = getStringFromRemoteServer()
     workCompleted(result)
 End Sub

 Private Delegate Sub workCompletedDelegate(result As String)
 Private Sub workCompleted(result As String)
      If InvokeRequired Then
          Invoke(New workCompletedDelegate(AddressOf workCompleted(result)
          Exit Sub
      End If
      Label1.Text = result
 End Sub

这可以通过DoWork始终调用Invoke调用workCompleted而不是workCompleted检查是否需要调用来进一步简化,但是如果您打算在 UI 线程上而不是一个工作线程。

于 2012-06-10T13:15:53.067 回答