问题描述
我正在从事有关数据采集的项目。我通过RasPi3b +从机器获取数据。数据保存在Raspi服务器上的MysqL中。为了跟踪数据,我使用C#winforms创建了一个dashborad。有时机器已关闭,我无法访问MysqL服务器。发生这种情况时,winforms将冻结。我不希望它冻结(也许绿色指示灯变成红色,但它不应该影响GUI)。我该如何解决?
这是我的计时器代码,每2秒触发一次。
private void timer1_Tick(object sender,EventArgs e)
{
for (int i = 0; i < (IpAndNames.Count ); i++)
{
string today = DateTime.Now.ToString("yyyy-MM-dd");
_lblListOpen[i].Text = "open: " + _machineDal.SpenTime(today,IpAndNames[i].Ip,"Logs","Machine","open").ToString();
_lblListClose[i].Text = "close: " + _machineDal.SpendTime(today,"close").ToString();
string lastState = _machineDal.LastDateAndState(IpAndNames[i].Ip,"Logs").LastState;
DateTime lastTime = _machineDal.LastDateAndState(IpAndNames[i].Ip,"Logs").LastDate;
TimeSpan spendTime= DateTime.Now - lastTime;
_lblListWorkingTime[i].Text = lastState +" "+ spendTime.ToString("h'h 'm'm 's's'");
}
}
这是我的数据层代码
public TimeSpan SpendTime(string date,string ip,string tableName,string db,string state)
{
TimeSpan openTime= new TimeSpan(0,0);
string connString = "server=" + ip + ";user=root;database=" + db + ";port=3306;password=root;Connection Timeout=1";
try
{
using (_conn = new MysqLConnection(connString))
{
string query = "SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(time ) ) ) AS timeSum FROM " + tableName + " " +
"WHERE Laststate='" + state + "' " +
"and date like \"" + date + "%\"";
using (MysqLCommand cmd = new MysqLCommand(query,_conn))
{
_conn.open();
using (MysqLDataReader reader = cmd.ExecuteReader())
{
reader.Read();
if (!reader.Isdbnull(0))
{
openTime= reader.GetTimeSpan(0);
}
}
}
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
return openTime;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)