winform中timer定时执行事件,gridview不刷新,求解,在线等
myTimer = new System.Timers.Timer(timerCycle);//设置Timer周期
myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed); //Timer执行事件
myTimer.AutoReset = true; //是否不断重复定时器操作
myTimer.Enabled = true;//定时器开始用
myTimer.Start(); //定时器开始
void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
try
{
//待执行集合中超过当前时间(自动开启或者关闭)
DataTable mToBeComplete = null;
if (dtToBeComplete != null && dtToBeComplete.Rows.Count > 0)
{
if (mToBeComplete == null)
{
mToBeComplete = new DataTable();
mToBeComplete.Columns.Add(TaskObject.TaskName, typeof(string));
mToBeComplete.Columns.Add(TaskObject.TaskType, typeof(int));
mToBeComplete.Columns.Add(TaskObject.TaskTime, typeof(DateTime));
mToBeComplete.Columns.Add(TaskObject.TaskAddress, typeof(string));
mToBeComplete.Columns.Add(TaskObject.TaskParamPID, typeof(string));
}
foreach (DataRow item in dtToBeComplete.Rows)
{
if (Convert.ToDateTime(item[TaskObject.TaskTime]) <= DateTime.Now)
{
DataRow dr = mToBeComplete.NewRow();
dr[TaskObject.TaskName] = item[TaskObject.TaskName];
dr[TaskObject.TaskType] = Convert.ToInt32(item[TaskObject.TaskType]);
dr[TaskObject.TaskTime] = Convert.ToDateTime(item[TaskObject.TaskTime]);
dr[TaskObject.TaskAddress] = item[TaskObject.TaskAddress];
dr[TaskObject.TaskParamPID] = item[TaskObject.TaskParamPID];
mToBeComplete.Rows.Add(dr);
}
}
}
if (mToBeComplete != null && mToBeComplete.Rows.Count > 0)
{
for (int i = 0; i < mToBeComplete.Rows.Count; i++)
{
if (mToBeComplete != null && mToBeComplete.Rows.Count > 0)
{
DataRow row = mToBeComplete.Rows[i];
int taskType = Convert.ToInt32(row["TaskType"]);
if (taskType == 1)//启动
{
StartProgram(row["TaskAddress"].ToString(), row["TaskParamPID"].ToString());
}
else//关闭
{
KillProgram(Convert.ToInt32(row["TaskParamPID"]));
}
//删除待执行中已经执行的
dtToBeComplete.Rows.RemoveAt(i);
DataRow drNew = dtComplete.NewRow();
drNew[TaskObject.TaskName] = row[TaskObject.TaskName];
drNew[TaskObject.TaskType] = Convert.ToInt32(row[TaskObject.TaskType]);
drNew[TaskObject.TaskTime] = Convert.ToDateTime(row[TaskObject.TaskTime]);
drNew[TaskObject.TaskAddress] = row[TaskObject.TaskAddress];
drNew[TaskObject.TaskParamPID] = row[TaskObject.TaskParamPID];
//添加到已执行
dtComplete.Rows.Add(drNew);
// DgvToBeComplete.Refresh();
// DgvComplete.Refresh();
}
}
}
}
catch (Exception ex)
{
MessageBox.Show("执行任务异常!" + ex);
return;
}
}