C#:使用单独的线程填充 UI

2023-12-11

我试图从我收到的申请中找出一些意义,以便追踪错误的根源。有一些代码(此处进行了简化)创建了四个线程,这些线程依次填充主窗体上的列表视图。每个方法从数据库获取数据并从资源 dll 检索图形,以便直接填充图像列表和列表视图。

从我在这里读到的内容(link)不应从 UI 线程以外的任何线程更新 UI 元素,但这似乎有效?

Thread t0 = new Thread(new ThreadStart(PopulateListView1));
t0.IsBackground = true;
t0.Start();

Thread t1 = new Thread(new ThreadStart(PopulateListView2));
t1.Start();

Thread t2 = new Thread(new ThreadStart(PopulateListView3));
t2.Start();

Thread t3 = new Thread(new ThreadStart(PopulateListView4));
t3.Start();

错误本身是 System.InvalidOperationException“无法将图像添加到 ImageList”。这让我想知道上面的代码是否以某种方式链接。

这种填充 UI 的方法是否值得推荐?如果不推荐,可能会导致什么并发症?

Update:

我可能通过提及“表格”提供了一些错误信息。该应用程序是一个 Windows 窗体应用程序,但代码来自基于用户控件的插件应用程序。线程是在该控件公开公开的初始化方法内创建的。列表视图等也是该插件用户控件的一部分。


  • 不要为此使用线程 - 如果您必须异步执行该操作,请在 THreadPool 上使用 WOrkItems。一般来说,线程的使用应该保留给长时间运行的项目 - THreadPool 或新的 .NET 4.0 任务 API 更适合于此。

  • UI 元素只能从元素创建线程中进行操作。它是否“有效”取决于您使用的 .net 框架版本或如果您破坏了该控件,则该控件实际上是什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#:使用单独的线程填充 UI 的相关文章

随机推荐

  • Python - 沃尔玛的网络抓取

    我正在尝试从中获取一些数据Walmart使用 Python 和 BeautifulSoupbs4 简而言之 我编写了一段代码来获取所有类别名称并且有效 import requests from bs4 import BeautifulSou
  • 启动前为进程设置环境变量

    我有以下情况 我有 Mac OS 捆绑包 其中包含使用一些第三方动态库的应用程序 这些库依赖于一些环境变量 让我们命名它ENV VAR 我想设置ENV VAR仅对我的应用程序具有某些值 因为如果我为整个系统设置它 可能会破坏其他一些应用程序
  • 通过 jQuery 发布数组

    我有一个表单 其中包含一些唯一的输入字段和一些具有重复名称的其他字段 如下所示
  • 如何为 Core Data 中的二进制数据启用外部存储

    我想使用 iOS 5 附带的新的外部二进制数据作为核心数据 我已经看过有关它的文章 例如 http bluecrowbar com blog 2011 08 coredata external html 除了告诉您选中 允许外部存储 框之外
  • 使用 Java 将文本复制到剪贴板

    我想从 a 复制文本JTable的单元格复制到剪贴板 使其可以粘贴到其他程序中 例如 Microsoft Word 我有来自JTable 但我不确定如何将其复制到剪贴板 这对我有用并且非常简单 导入这些 import java awt da
  • 如何检测用户现有订阅的价格是否已更改(Google Play 应用内购买)?

    Google 有文档说明如果订阅价格发生变化该怎么办 您应该使用计费客户端并启动PriceChangeConfirmationFlow 但是 您如何首先检测价格是否发生变化 哪个 Android 库 API 会告诉我这一点 SkuDetai
  • 在 Printf 模块中输入

    在文件中打印模块 不太明白其中的机制 a out channel unit format 我想我在实践中经常使用它 例如 以下函数在编译时可以很好地键入 type t x int y int let print chan out chann
  • Balanced_accuracy 不是 scikit-learn 中的有效评分值

    与这篇文章超级相似 ValueError balanced accuracy 不是 scikit learn 中的有效评分值 我在用 scoring precision macro recall macro balanced accurac
  • Android:自定义相机拍摄的图像太暗

    在我的应用程序中 我必须拍摄自定义活动的照片 我实现了所有功能并且可以保存我的照片 但在某些设备中它们太暗了 我有这段代码 但它对我没有帮助 Parameters params mCamera getParameters if params
  • Clock() - C 函数的执行时间

    我正在尝试测量 C 代码块的执行时间 我的代码中有类似这样的内容 clock t begin end double time spent begin clock ATL dsymv 122 n alfa A n X 1 beta Y 1 e
  • 在 powershell 中聚焦 IE 窗口

    My code ie new object com InternetExplorer Application ie navigate http localhost ie visible true ie fullscreen true 但是全
  • 如何在 RMI 方法的参数中传递对象?

    我正在尝试在 RMI 方法中添加参数 当我添加例如String一切正常 但我不确定是否可以传递我创建的对象 我是 RMI 新手 所以我的代码非常简单 HelloIF public interface HelloIF extends Remo
  • 尝试使用 JavaScript 从 azure 获取访问令牌时无法加载响应数据

    我想为我在 azure 上注册的应用程序获取访问令牌 为此 我编写了一段代码来访问其余 API 这是我的代码
  • 数据透视表字段显示除空白之外的所有内容

    我需要在刷新后更新数据透视过滤器以选择除blank 这里的其他答案利用 ShowAllItems方法对我不起作用 因为它也会显示没有数据的项目 下面的枢轴选项Display 我尝试使用在另一个问题上找到的另一个解决方案 PivotItems
  • 通过自定义协议符合 MKAnnotation 协议

    我想轻松地在地图上获取 2 个或更多不同的对象类型 Swift 2 0 我想使用协议 我创建了一个这些对象也需要遵守的协议 我假设现在任何符合 PinProtocol 的项目本质上与 MKAnnotation 相同 只是更多 protoco
  • Android Google Play / Drive Api

    您好 我正在使用 Google Drive Api 通过 AppDataFolder 工具来存储数据库 我有一个测试应用程序在一台设备上成功运行 我能够上传 更新 删除 下载数据库文件并将其重新集成到程序中 没有任何问题 我遇到的问题是 当
  • 正则表达式在javascript中匹配反向组

    我想匹配的字符串don t have abc def or ghi 相反的情况很简单 abc def ghi 我该如何扭转这种情况 我不想 abc def ghi 因为那里会有更多的 逻辑 如果这就是它的作用的话 如何逆转整场小组赛 或无论
  • 为什么我的闰年算法不起作用(Java)? [复制]

    这个问题在这里已经有答案了 这是我所拥有的 Scanner input new Scanner System in System out print Enter a year int Year input nextInt System ou
  • 从sql server中的表中分割逗号分隔值

    我有一个SQL table其中有多少条记录 我想知道其中有多少个名字以及一个名字在其中出现的时间 表名Mst Name john smith alax rock smith alax sira john rock rock sira 我想知
  • C#:使用单独的线程填充 UI

    我试图从我收到的申请中找出一些意义 以便追踪错误的根源 有一些代码 此处进行了简化 创建了四个线程 这些线程依次填充主窗体上的列表视图 每个方法从数据库获取数据并从资源 dll 检索图形 以便直接填充图像列表和列表视图 从我在这里读到的内容