1

インターネットから多数の画像をフェッチして、WinFormにロードしています。遅い接続から画像がフェッチされるときのタイムラグを除いて、すべてが正常に機能します。画像をバックグラウンドでフェッチしたいのですが、UIが応答しなくなることはありません。

'BackgroundWorker'を試しましたが、機能しませんでした。これを行う他の方法はありますか?非同期呼び出しについて読みましたが、うまくいくかどうかわかりません。

バックグラウンドワーカー::

 foreach(String str in images )
            {
              BackgroundWorker bw=new BackgroundWorker();
              bw.DoWork += (s, e) => { run(str); };  // 
              bw.RunWorkerAsync();
            }

run()画像のURLを画像ボックスに設定するだけです。

4

1 に答える 1

3

UI オブジェクトを作成したスレッド以外から UI を更新することはできません。

ただし、"Invoke"を使用して、クラスのメイン スレッドで呼び出しを行うことができます。

Invoke( (Action)(() => { pictureBox.image = loadedImage; }) );
于 2012-08-12T07:20:04.277 に答える