前提是winform程序要开启运行,timer才会执行。
public TimeSpan fun()
{
System.DateTime currentTime = new System.DateTime();
currentTime = System.DateTime.Now;
DataTable dtMaxTime = BLL.XBC_Record.GetMaxTime();
DateTime historyTime = Convert.ToDateTime(dtMaxTime.Rows[0][0].ToString());
TimeSpan ts = currentTime - historyTime;
return ts;
}
以下有2个定时器:
private void timer2_Tick(object sender, EventArgs e)
{
TimeSpan ts = fun();
//每两分钟定时发送一次 发送的同时检测下最新数据记录 当这个发送的时间-最新记录时间 》=10 分钟 就停止发送
//当有新的记录时开始激活继续发送
if (ts.Minutes >= 10)
{
timer2.Enabled = false;
}
else
{
timer2.Enabled = true;
MESWebService.WebServiceSoapClient MesWeb = new MESWebService.WebServiceSoapClient("WebServiceSoap", BLL.Config.GetValue("XBC", "MES接口"));
MesWeb.GetServiceTime();
//MessageBox.Show(MesWeb.GetServiceTime().ToString());
}
}
private void timer3_Tick(object sender, EventArgs e)
{
TimeSpan ts = fun();
if (ts.Minutes < 10)
{
timer2.Enabled = true;
}
}
public static DataTable GetMaxTime()
{
string sql = "select MAX(AddTime) from XBC_Record ";
List<SqlParameter> paras = new List<SqlParameter>();
return Util.DBHelper.Select(sql, paras);
}
/// <summary>
/// 查询记录
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="paras">参数集合</param>
/// <returns></returns>
public static DataTable Select(string sql, List<SqlParameter> paras)
{
using (SqlConnection sqlCon = new SqlConnection(Util.Configure.ConnStr))
{
DataTable dt = new DataTable();
try
{
if (sqlCon != null)
{
sqlCon.Open();
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(sql, sqlCon);
foreach (SqlParameter para in paras)
{
cmd.Parameters.Add(para);
}
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
cmd.Parameters.Clear();
return ds.Tables[0];
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
sqlCon.Close();
}
return null;
}
}