【问题标题】:How to load images in background thread without affecting the UI?如何在后台线程中加载图像而不影响 UI?
【发布时间】:2012-08-12 06:43:23
【问题描述】:

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

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

后台工作人员 ::

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

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

【问题讨论】:

  • “没用”是什么意思?
  • 您似乎试图发布图片。你有吗?
  • @Shai BackgroundWorker中加载图片时UI没有响应
  • 请添加BackgroungWorker代码

标签: c# winforms backgroundworker


【解决方案1】:

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

但是,您可以使用 "Invoke" 在类的主线程上进行调用。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    相关资源
    最近更新 更多