我在主窗口上添加了一个System.Windows.Forms.Timer,定时器每次触发时会创建一个BackgroundWorker,并开始后台操作,在BackgroundWorker.dowork()事件处理程序代码里我引用了主窗口上的状态条标签,为什么没有报错可以执行?
我真是搞不明白啊,有劳懂的人给讲讲呢,真心先谢谢您了!
“tssl航班查询状态”和“tsslOPC服务器状态”就是主窗口上的状态条标签
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
timer1.Interval = 60000;
btn设置登机桥是否加入航班联动.Enabled = false;
btn停止航班联动.Enabled = false;
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += 向OPC服务器中写入命令;
bw.RunWorkerCompleted += 后台写入完成;
bw.RunWorkerAsync();
}
private void 向OPC服务器中写入命令(object sender, DoWorkEventArgs e)
{
try
{
hbqlsjjh.查询航班全量数据();
if (登机桥是否航班联动 == true)//登机桥加入了航班联动
{
if (tssl航班查询状态.Text == " 本次航班查询成功")//本次查询成功,根据航班信息写入
{
for (int i = 0; i < 49; i++)
{
OPC.写登机桥航班控制点(i, Convert.ToString(登机桥根据航班是否开(i)));
}
}
else if (tssl航班查询状态.Text == " 本次航班查询失败") //本次查询失败,打开所有登机桥的空调
{
for (int i = 0; i < 49; i++)
{
OPC.写登机桥航班控制点(i, "1");
}
}
}
}
catch (Exception err)
{
tsslOPC服务器状态.Text = " 与OPC服务器交互失败:" + err.Message;
}
}