gpt4 book ai didi

c# - 为什么我会收到此错误 :"Cross-thread operation not valid: Control lbFolders accessed from a thread other than the thread it was created on."?

转载 作者:行者123 更新时间:2023-11-30 18:48:32 25 4
gpt4 key购买 nike

这让我很困惑,也许有人可以用教育之光来照亮我的无知。这是在 C# Windows 应用程序中。我正在从线程访问列表框的内容。当我尝试像这样访问它时

prgAll.Maximum = lbFolders.SelectedItems.Count;
我得到了错误。但是,这是我没有得到的部分。如果我注释掉那一行,下一行
foreach (string dir in lbFolders.SelectedItems)
执行得很好。

编辑:像往常一样,我缺乏沟通技巧。让我澄清一下。

我知道从创建它们的线程以外的线程访问 GUI 项目会导致问题。我知道访问它们的正确方法是通过委托(delegate)。

我的问题主要是:为什么我可以很好地访问和遍历 SelectedItems 对象,但是当我尝试获取(而不是设置)它的 Count 属性时,它就崩溃了。

最佳答案

您不能从单独的线程访问 GUI 元素。使用委托(delegate)进行更改。

例如。

lblStatus.Invoke((Action)(() => lblStatus.Text = counter.ToString()));

或更老的学校:

lblTest.Invoke((MethodInvoker)(delegate() 
{
lblTest.Text = i.ToString();
}));

我有一篇关于如何在所有 .Net 版本中执行此操作的博客文章 here .

关于c# - 为什么我会收到此错误 :"Cross-thread operation not valid: Control lbFolders accessed from a thread other than the thread it was created on."?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/244591/

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