C#中使用Threads和ListView的问题

2024-03-16

我有一个文本过滤器,在 TextChanged 事件中我以这种方式启动列表视图填充代码:

ThreadPool.QueueUserWorkItem(new WaitCallback(populate));

然后在填充方法中我有这样的代码

listView1.BeginUpdate();
listView1.Clear();

// rest of the code

listView1.EndUpdate();

但 listView1.BeginUpdate() 调用给出以下异常:

System.NotSupportedException was unhandled
  Message="An error message cannot be displayed because an optional resource assembly containing it cannot be found"
  StackTrace:
    at Microsoft.AGL.Common.MISC.HandleAr()
    at System.Windows.Forms.ListView.ntvSetStyleEx()
    at System.Windows.Forms.ListView.BeginUpdate()
    at App.frmSelectClient.populate()
    at WorkItem.doWork()
    at System.Threading.Timer.ring()
  InnerException: 

我做错了什么?

我想在后台线程中发出 ListView 的数量。


您无法从 UI 线程以外的任何线程更新 UI 元素。使用 Control.Invoke/BeginInvoke 来执行此操作。

您可以在后台线程中完成所有数据加载等操作,但您需要编组到 UI 线程以实际填充 UI 控件本身。

大多数 UI 框架都是这种情况 - 当然还有 Windows Forms(桌面和 CF)和 Windows Presentation Foundation(您使用 Dispatcher 而不是 Control.Invoke/BeginInvoke)。

需要注意的一点是:如果我没记错的话,Compact Framework 仅支持 Control.Invoke/BeginInvoke 的 EventHandler 委托。诚然,这在最近的版本中可能已经改变。

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

C#中使用Threads和ListView的问题 的相关文章

  • 如何从当前 .NET 表单/应用程序发送密钥 F12

    我非常确定以下按钮激活的表单代码应该在我的 C 应用程序中引发 Control F12 SendKeys F12 但它似乎并没有继续进入 Windows shell 并激活另一个正在侦听它的程序 我的键盘可以用 看起来发送键在某处被拦截 并
  • 如何在 C# 事件中区分更改是由代码还是由用户进行?

    我有一个简单的TextBox一开始是空的 我有一个简单的事件 TextChanged 可以知道用户何时更改了其中的任何内容TextBox 但是 如果我自己在代码中对其执行任何操作 该事件就会触发 喜欢设置textbox Text Test
  • 处理 LINQ sum 表达式中的 null

    我正在使用 LINQ 查询来查找列的总和 并且在少数情况下该值有可能为空 我现在使用的查询是 int score dbContext domainmaps Where p gt p SchoolId schoolid Sum v gt v
  • 在 Windows Phone 上启动 pdf 文件时出现 System.Runtime.InteropServices.COMException

    我正在尝试使用我之前在另一个应用程序上使用过的以下工作代码打开 pdf 文件 但这一次 当流程到达此行时 我收到 System Runtime InteropServices COMException Windows System Laun
  • 我应该在单元测试中使用 AutoMapper 吗?

    我正在为 ASP NET MVC 控制器方法编写单元测试 这些控制器依赖于IMapper 我创建的用于抽象 AutoMapper 的接口 使用 Castle Windsor 通过构造函数注入传入 动作方法使用IMapper从领域对象映射到
  • 使用 C# 使用应用程序密码登录 Office 365 SMTP

    在我们的 Office 365 公司帐户中实施两步身份验证之前 我的 C WPF 程序已成功进行身份验证并发送邮件 我使用了 SmtpClient 库 但现在我必须找到另一个解决方案 因为它不再起作用 我找不到任何使用 O365 应用程序密
  • 浮点提升:stroustrup vs 编译器 - 谁是对的?

    在 Stroustrup 的新书 C 编程语言 第四版 第 10 5 1 节中 他说 在执行算术运算之前 整数提升用于从较短的整数类型创建整数 类似地 浮点提升是用于从浮点数创建双精度数 我用以下代码确认了第一个声明 include
  • System.InvalidCastException:指定的强制转换无效

    使用 WatiN 的自动化正在进行中 使用几个并发线程来测试应用程序 很少有线程失败 日志报告 堆栈跟踪显示以下内容 System InvalidCastException Specified cast is not valid at SH
  • Linq Where 本地计数器关闭在 VS watch 中的结果不同

    我尝试删除前 3 个元素array与 LinQWhere扩展功能 这是一个例子 var array new 1 2 3 4 5 6 7 8 9 var count 3 var deletedTest1 0 var test1 array W
  • 字节到二进制字符串 C# - 显示所有 8 位数字

    我想在文本框中显示一个字节 现在我正在使用 Convert ToString MyVeryOwnByte 2 但是 当字节开头有 0 时 这些 0 就会被删除 例子 MyVeryOwnByte 00001110 Texbox shows g
  • C#:如何使用 SHOpenFolderAndSelectItems [重复]

    这个问题在这里已经有答案了 有人可以举例说明如何使用 shell 函数吗SH打开文件夹并选择项目 http msdn microsoft com en us library bb762232 VS 85 aspx来自 C 我不太明白如何使用
  • jQuery Mobile 数据过滤器,以防没有结果

    我目前正在探索 jQuery Mobile 以开发带有订单跟踪信息的移动版仪表板 计划是使用一个包含所有订单的简单无序列表 人们可以单击他们想了解更多信息的链接 由于此列表可能会变得相当大 因此拥有过滤功能非常好 使用 jQuery Mob
  • C++ Primer 5th Edition 错误 bool 值没有指定最小大小?

    bool 的最小大小不应该是 1 个字节吗 这有点学术性的东西 尽管它们会转换为数字 并且 与其他所有事物一样 它们最终将基本上由计算机内存中的数字表示 但布尔值不是数字 你的bool可以取值true 或值false 即使您确实需要至少 1
  • 如何使用 Clang 查找内存泄漏

    我在我的机器 ubuntu 中安装了 Clang 以便发现我的 C 代码中的内存泄漏 我编写了一个示例代码来检查它的工作情况 如下所示 File hello c for leak detection include
  • 运行外部进程的非阻塞线程

    我创建了一个 Java GUI 应用程序 它充当许多低级外部进程的包装器 该实用程序按原样运行 但迫切需要一项重大改进 我希望我的外部进程以非阻塞方式运行 这将允许我并行服务其他请求 简而言之 我希望能够在生成数据时处理来自外部进程的数据
  • 宏观评价[重复]

    这个问题在这里已经有答案了 可能的重复 未定义的行为和序列点 https stackoverflow com questions 4176328 undefined behavior and sequence points 我无法理解以下宏
  • 如何使用 g++ 在 c++ 20 中使用模块?

    我读了这个链接https gcc gnu org wiki cxx modules https gcc gnu org wiki cxx modules并尝试从该网站复制以下示例 我已经知道这个编译器部分支持模块系统 注 我用的是windo
  • 如何仅更改 DateTime 的日期部分,同时保留时间部分?

    我在代码中使用了很多 DateTime 我想将这些日期时间更改为我的特定日期并保留 时间 1 2012 02 02 06 00 00 gt 2015 12 12 06 00 00 2 2013 02 02 12 00 00 gt 2015
  • C++0x 中的新 unicode 字符

    我正在构建一个 API 它允许我获取各种编码的字符串 包括 utf8 utf16 utf32 和 wchar t 根据操作系统 可能是 utf32 或 utf16 新的 C 标准引入了新类型char16 t and char32 t没有这么
  • 当我读取 500MB FileStream 时出现 OutOfMemoryException

    我使用 Filestream 读取大文件 gt 500 MB 但出现 OutOfMemoryException 任何有关它的解决方案 我的代码是 using var fs3 new FileStream filePath2 FileMode

随机推荐

  • 如何实际检测 musl libc?

    musl 团队声称不需要检测 musl libc 的方法 因为它们只实现标准功能并且没有需要检测的怪癖 直到今天 这种说法很可能是正确的 但现在已经不再正确了 正常的功能检测不起作用 因为该功能存在但已损坏 我宁愿不探测它 因为我不想在编译
  • 如何捕获C++正则表达式中的0-2组并打印它们?

    Edit 3 当我陷入正则表达式困境时 我采用了 good ol 自定义解析方法 事实证明这并没有那么糟糕 因为文件内容可以非常整齐地标记 并且可以使用以下命令在循环中解析标记very简单的状态机 对于那些想要检查的人 在我在 Stacko
  • DataGridComboBoxColumn 不更新模型 WPF

    我在 WPF 和 DataGridComboBoxColumn 中使用 Datagrid 请找到下面的代码
  • Android 中密码字段的正则表达式

    我如何验证EditText with Regex通过允许特定字符 我的条件是 密码规则 一个大写字母 一个号码 一个符号 任何可以接受的正常符号 我可以知道实现我的目标的正确方法是什么吗 试试这个可能有帮助 0 9 a z A Z S 4
  • ko.mapping 创建函数,扩展对象

    是否可以在映射过程中修改对象的模式 由于缺乏更好的术语 我想是的 我似乎无法让它发挥作用 我正在尝试这样的事情 var data itemOne someData itemTwo moreData var mapping newItem c
  • 结果显示为空

    我有一个Customer创建的 JSON 对象的值如下 Title Mr FirstName S LastName J Birthday 01 01 2011 Address Line1 Line1 Line2 Line2 City Cit
  • PHP 搜索数组列进行匹配

    我有一个如下所示的数组 其中有多个列 我想在第一列中搜索特定值 并返回匹配的行 这可能吗 例如 Array 0 gt Array id gt 1 column2 gt value2 column3 gt value3 column4 gt
  • 如何在react中使用axios删除单个项目

    我查看了很多文章和帖子 例如this https stackoverflow com questions 26806084 delete a comment react js但它在我的情况下不起作用 我只需要使用 axios 从我的应用程序
  • 在模板中使用导出关键字

    据我了解 可以使用 export 关键字 以便可以通过头文件公开模板类或函数签名 并抽象库文件中的实际实现 谁能提供一个实用的示例程序来说明如何做到这一点 使用时有什么缺点或需要注意的地方吗 编辑 基于答案的后续问题 正如答案中提到的 导出
  • 在 git bash 中找不到 wget 命令

    我已经在我的cmd中尝试过 pip install wget 它显示 gt pip install wget Requirement already satisfied wget in c users user python python3
  • angular2 添加两个数字视图侧

    我希望能够添加两个文本框中的数字 template h1 Adding inputBox Numbers h1 p Num1 p
  • 如何在测试中设置或模拟元素scrollHeight和元素clientHeight?

    我有一个 javascript 函数来检查 html 元素 el 是通过检查确定的大小 function isOverflow element string boolean const el document getElementById
  • PaintComponent 中的图像仅在调整窗口大小后才会显示

    我想用paintComponent Graphics g 使用 for 循环绘制一些图像 但是 JFrame 仅显示为白色屏幕 并且在我调整窗口大小后仅显示黑色背景和图像 import java awt import java awt ev
  • Robolectric:setupActivity() 中的 NullPointerException

    我尝试使用 Robolectric 来测试我的活动 但在尝试使用 Robolectric 设置活动时 我总是收到 NPE 我已按照指南进行操作robolectric org http robolectric org网站 这是我的代码 Con
  • 在GCP中,通过Cloudbuild如何确保仅触发文件中发生更改的那些步骤

    我的问题是 给定下面的 yaml 文件 如果我在 dir process cbd bu data 的任何文件中进行更改 Cloud Build 会在触发时串行运行所有步骤 这会导致时间的浪费 我希望只有该步骤在 cloudbuild 中运行
  • 如何通过bash判断一个线程是不是内核线程?

    如何通过以下方式识别一个线程是不是内核线程bash 我发现你可以通过以下方式识别内核线程ps 如果线程名称包含在 它是一个内核线程 但我认为这不是一个好的解决方案 对于这个问题的任何提示 我将不胜感激 您可以通过查看来确定特定任务是否是 k
  • Magento 中的多种货币

    我已经可以选择更改货币 但还有另一个问题 目前基础货币设置为欧元 这对我来说没问题 但客户可能想要更改它 如果我将基础货币更改为 RON 货币转换器下拉菜单就会消失 如何使用欧元以外的其他货币 但仍可以选择在店内更改货币 警告 magent
  • 我收到“org.apache.catalina.core.StandardContext startInternal SEVERE:错误listenerStart”。一些线索?

    我正在开发一种复杂的 hello world spring web 应用程序 因为它只有最基本的功能 一个控制器和一个视图 用 thymeleaf 制作 简单的数据库连接 oracle 和简单的电子邮件发送功能 现在 我尝试使用我的 IDE
  • 转换电子表格小数格式:以句点和逗号分隔的小数位

    在 OpenOffice Calc 中 可以更改标准美国之间的数字格式 小数点分隔符为句点 以及 SI 国际系统 格式 小数点分隔符为逗号 这可以通过在第一种情况下将语言设置为美国英语 在后一种情况下将语言设置为加拿大法语 在 格式 菜单中
  • C#中使用Threads和ListView的问题

    我有一个文本过滤器 在 TextChanged 事件中我以这种方式启动列表视图填充代码 ThreadPool QueueUserWorkItem new WaitCallback populate 然后在填充方法中我有这样的代码 listV