我在与用户控件绑定的名为 CreateAlarm.cs 的类中的 Visual Studio 中看到以下错误。
'跨线程操作无效:控件'CreateAlarm'从创建它的线程以外的线程访问。
此代码在以下方法上调用:
private void ClearPanel()
{
panel1.Controls.Clear();
}
程序运行的方式是,这行代码是清除用户控件面板的方法,然后通过从用户控件内调用主窗体上的方法来添加更多用户控件。
调用此方法导致问题(导致错误时)的代码如下:
void CreateAlarm_TimeElapsed()
{
ClearPanel();
Alarm alarmScreen = new Alarm(); // this creates an instance of the user control
AddToPanel(alarmScreen);
}
此代码实际上是从带有事件和委托的用户控件中调用的。
问题是单独页面的相同代码导致问题。我认为这可能是因为代码是由使用 System.Timers 结束的计时器运行的。
有没有人对可能是什么问题有任何想法?或有关错误消息的潜在原因的其他信息?
谢谢 :)