我不断得到
Cross-thread operation not valid: Control 'keyholderTxt' accessed from a thread other than the thread it was created on.
关于项目中各种形式的各种控件,我用谷歌搜索了很多关于如何从各种线程访问内容的回复,但据我所知,我没有在我的项目中使用任何其他线程,并且更改代码中数百个可能的地方将是难以管理的。
它从来没有发生过,只是因为我添加了各种看似无关的代码。我包含了一个我得到以下错误的地方的示例,但它在整个解决方案的很多地方都发生了。
keyholderTxt.Text = "Keyholders Currently In:\r\n \r\n Nibley 1: + keyholders";
或者这个,一个更好的例子,你可以看到从表单加载到错误发生的所有事情:
private void Identification_Load(object sender, System.EventArgs e)
{
_Timer.Interval = 1000;
_Timer.Tick += new EventHandler(_Timer_Tick);
_Timer.Start();
txtIdentify.Text = string.Empty;
rightIndex = null;
SendMessage(Action.SendMessage, "Place your finger on the reader.");
if (!_sender.OpenReader())
{
this.Close();
}
if (!_sender.StartCaptureAsync(this.OnCaptured))
{
this.Close();
}
}
void _Timer_Tick(object sender, EventArgs e)
{
this.theTime.Text = DateTime.Now.ToString();
}
private void OnCaptured(CaptureResult captureResult)
{
txtIdentify.Clear();
//other stuff after the cross thread error
}
诸如不关闭数据读取器之类的事情会导致这种错误吗?
我正在使用 Windows 窗体应用程序。