如何在后台线程中加载图像而不影响UI?

时间:2012-08-12 06:43:23

标签: c# winforms backgroundworker

我正在从互联网上获取大量图片并加载到我的winform中。除了从慢速连接中提取图像的时间延迟外,一切正常。我希望在后台获取图像,但UI不应该没有响应。

我试过了'BackgroundWorker',但它没有用。有没有其他方法这样做?我读到了异步调用,但我不确定它是否适用于我。

后台工作人员::

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

run()只是将图片网址设置为图片框。

1 个答案:

答案 0 :(得分:3)

除了从您创建UI对象的线程外,您无法进行UI更新。

然而,您可以使用"Invoke"在班级的主线程上进行调用。

Invoke( (Action)(() => { pictureBox.image = loadedImage; }) );