0

この質問をしたのは私が初めてではないと思いますが、VB.NET でスレッドを使用する最も簡単な方法は何ですか? つまり、リモート サーバーから文字列をダウンロードし、その文字列を GUI に表示する必要があるため、コールバック関数を使用してメイン スレッドで呼び出す必要があります。これにはさまざまなアプローチを見つけましたが、(GTKを使用して)次のようなものを使用したPythonと比較すると、すべてが非常に難しいようです。

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から呼び出しを行うことでさらに簡素化できますが、UI スレッドではなく UI スレッドで作業を行う場合、私が書いた方法はもう少しカプセル化されて効率的です。ワーカー スレッド。workCompletedworkCompleted

于 2012-06-10T13:15:53.067 に答える