【发布时间】:2008-10-28 19:49:03
【问题描述】:
这让我感到莫名其妙,也许有人可以将教育之光照亮我的无知。这是在 C# Windows 应用程序中。我正在从线程访问列表框的内容。当我尝试像这样访问它时
prgAll.Maximum = lbFolders.SelectedItems.Count;
我得到了错误。但是,这是我没有得到的部分。如果我注释掉那一行,下一行foreach (string dir in lbFolders.SelectedItems)
执行得很好。
编辑: 像往常一样,我缺乏沟通技巧。让我澄清一下。
我知道从创建它们的线程之外的线程访问 GUI 项目会导致问题。我知道访问它们的正确方法是通过委托。
我的问题主要是这样的: 为什么我可以很好地访问和遍历 SelectedItems 对象,但是当我尝试获取(未设置)它的 Count 属性时,它就崩溃了。
【问题讨论】:
-
这里的大多数答案都是正确的,但您说它们是错误的,因为它们不适合您,并且可能是您投票否决了它们。这让我对你投了反对票。
-
如果您将鼠标悬停在赞成或反对按钮上,您会看到它说“这很有帮助”或“这没有帮助”只是告诉我我不能做我能做的事情做没有帮助。更不用说它实际上并没有解决我提出的问题。
-
至于你怎么给我的问题投票,我不在乎。
-
问题是他们都解释了一个简单的规则:不要做跨线程GUI的东西,因为那是错误的原因。您问的唯一问题是“为什么我会收到此错误”,他们都解释了原因。您没有确切地问为什么在某些情况下您没有收到该错误。
-
@"我可以不在乎":很好,但我想知道为什么我被否决了。正因为如此,我总是写下我为什么要投票给别人。称之为礼貌。
标签: c# .net multithreading