我有一个大型项目,我正在使用C#编写,这是一种我很新的语言。该项目很大程度上依赖于GUI,并且显示了大量数据。最近,我们一直在以前从未遇到过的地方发生跨线程错误。他们在那里发生这些错误很容易解决:C# - 何时进行线程安全调用
if (logListView.InvokeRequired)
{
logListView.BeginInvoke(new MethodInvoker(
() => logListView.Items[logListView.Items.Count - 1].EnsureVisible()));
}
else
{
logListView.Items[logListView.Items.Count - 1].EnsureVisible();
}
我的问题但是,是这样的:是否该方法需要应用于我每次访问Windows窗体对象?有特殊情况吗?我不使用多线程,所以据我所知,发生这些错误的地方不在我的控制范围之内。例如。我无法控制哪一段代码是由哪个线程执行的:C#自己正在做所有这些事情(我不太了解这种语言)。为每条修改GUI的行实现if语句似乎格外令人讨厌。
事实上,您获得跨线程异常意味着某段代码是线程化的。找出它是什么,你应该控制。 – 2012-08-04 20:54:52