public static bool checkbtn1()
{
using (cDBMysql cdb = new cDBMysql("dbwebConfig.ini", 1))
{
if(cdb.ExecuteScalar("select bt_trigger from button_action whereid='1'").ToString() == "1" && cdb.ExecuteScalar("selectavailable from button_action where id='1'").ToString() == "1")
{
cdb.executeSql("updatebutton_action set bt_trigger='0'where id='1'");//清除是否触发数据,在执行方法的时候,每个按钮都要
return true;
}
else
return false;
}
}
FAT需要的5个按钮基本上都是这个套路,拿两句selsct语句查找db相应栏位若满足触发条件,先把是否触发置0,然后return一个数值向下执行,不满足就return不能执行的值或者干脆不return。
功能是可以实现,可是短短一个判断要读数据库3次,浪费资源,怎样才能尽可能减少访问次数,我把两句select放在datatable里,用rows[][]来判断,满足条件才进来这个方法。这写在一个每秒跑10次的线程里,不停的刷数据库。代码为
private void ButtonInteraction()//线程每0.1秒执行一次
{
while (1 == 1)
{
DataTable dt1 =aaa.checktable();
for (int i = 0; i <dt1.Rows.Count; i++)
{
if (dt1.Rows[i]["是否触发"].ToString() =="1" && dt1.Rows[i]["是否禁用"].ToString() == "1")
{
if (dt1.Rows[i]["按钮名称"].ToString() == "登陆")
DengLu(false);//checkbtn36();
else if(dt1.Rows[i]["按钮名称"].ToString() == "自检")
ZiJian(false);//checkbtn1();
else if (dt1.Rows[i]["按钮名称"].ToString() == "启动")
QiDong(false);//checkbtn2();
else if(dt1.Rows[i]["按钮名称"].ToString() == "调度停止")
TingZhi(false);//checkbtn3();
else if(dt1.Rows[i]["按钮名称"].ToString() == "手动任务")
HandMission(false);// checkbtn35();
}
else
continue;
}
Thread.Sleep(100);//停0.1秒
}
}
现在方法就很简便了。
public static bool checkbtn1()
{
using (cDBMysql cdb = new cDBMysql("dbwebConfig.ini", 1))
{
cdb.executeSql("updatebutton_action set bt_trigger='0'where id='1'");//清除是否触发数据,在执行方法的时候,每个按钮都要
return true;
}
}