gpt4 book ai didi

c# - 从其他线程 : Cross-thread operation not valid 获取列表框项

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:23 25 4
gpt4 key购买 nike

到目前为止,我已经看到了 1000 个如何使用 Invoke 方法从不同线程设置列表框对象中的项目的示例。

但是,我找不到任何关于如何简单地从后台工作线程读取列表框中的项目的解决方案。例如,我如何在阅读 SelectedItems 之前调用它...

foreach (var item in CheckedListBox1.SelectedItems)
{
//Do something
}

在后台工作程序中运行的上述代码产生了以下错误:

跨线程操作无效:从创建它的线程以外的线程访问控件“CheckedListBox1”。

最佳答案

您可以类似地使用 Invoke从后台线程读取 UI 元素:

var selectedItems = (IList)this.Invoke(new Func<IList>(() =>
CheckedListBox1.SelectedItems.Cast<object>().ToList()));

foreach (var item in selectedItems)
{
//Do something
}

如果您知道项目的类型,您可以在 Cast 中指定类型调用,并返回 IList<YourType>而不是非通用的 IList .

关于c# - 从其他线程 : Cross-thread operation not valid 获取列表框项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10880212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com