2

一部のデータを処理しているスレッドに関数がある場合、コールバック関数を呼び出して UI のステータスを更新します。

UI がコールバック関数の処理に時間がかかる場合は、あまり役に立ちません。コールバック関数で更新を処理するだけでなく、ブロックしないように何らかのメッセージを UI に送信する必要がありますか?

つまり、処理関数で更新ステータス関数を呼び出すと、これはすぐに処理関数に返され、更新では UI 更新が完了するのを待つことができます。

または、UI への更新データの送信を処理するために 3 番目のスレッドが必要ですか?

4

3 に答える 3

2

通常、ブロックせずにコールバックを UI スレッドにポストする方法があります。

例えば:

使用している UI ツールキットのドキュメントを見れば、似たようなものが見つかるはずです。

于 2008-10-20T06:32:20.310 に答える
2

.NET (WinForms、WPF、Silverlight) では、UI のスレッドで Dispatcher オブジェクトを使用して、ユーザー インターフェイスの update メソッドを呼び出すだけです。ディスパッチャーは、同期 (Invoke を使用) または非同期(BeginInvoke/EndInvoke を使用) で呼び出すことができます。.NET では、BeginInvoke ごとに EndInvoke を呼び出す必要があることに注意してください (.NET では非同期ハンドルが解放されるという保証が得られないため)。独自のFireAndForgetを実装します)

于 2008-10-20T06:32:50.730 に答える
0

Mapad は、UI とスレッドに関するリンクをここに投稿しました。どの UI ツールキットとどの言語について言及していないので、具体的なことは言えません。

于 2008-10-20T06:27:46.510 に答える