2011-01-13 13 views

答えて

41

いいえ、それは背景スレッドで作業を行うことはありません - それはUIスレッドで仕事をするのです。 UIを操作するためには、通常、をバックグラウンドスレッドからと呼びます。これはUIスレッドでのみ実行できます。

ラムダ式の本体は、UIスレッドで実行したいコードです。

+1

Jonさん、あなたの投稿の人気は非常に優れています。私の帽子はあなたから離れています:) –

+8

BeginInvokeは、UIスレッド自体から、既存のUIアクションキューが空の後でUIスレッドのフォローアップアクションまで使用できることにも言及することも重要です。基本的に、UIスレッドが何もしなくなるまで作業を延期します。 – JustinAngel

+0

@JonSkeet:バックグラウンドスレッドでコードを実行するにはどうすればいいですか?このコードはUI上にプログレスバーが表示されないようにしています。 – Rohaan

6

UIを更新するコードがUIスレッド以外のスレッドから実行されると、無効なクロススレッドアクセス例外が発生します。

ディスパッチャを使用すると、別のスレッドからUIスレッドにコードを渡すことができます。

私がこの記事に載せたプロジェクトは、これを他の概念の中でも実証しています。

WebClient, HttpWebRequest and the UI Thread on Windows Phone 7

2

Deployment.Currentを使用する必要があります。 SilverlightアプリケーションでDispatcherを使用している場合(DependencyObjectを継承しないコンテキスト内で)、UI以外のワーカースレッドで作業しているときに、UIを更新する必要があります。

関連する問題