我即将建立报警系统。它的工作方式是通过从gridview列中提取日期/时间信息,然后使用异步操作来检查现在时间是否等于gridview日期/时间列中的一个或多个行,如果是,则显示一个警报。C#报警系统回路问题
一切正常,到目前为止,除了当2行包含相同的日期/时间,报警将触发4次,而不是2.这是我走到这一步:
string firma = "";
private void radButton1_Click(object sender, EventArgs e)
{
try
{
for (int i = 0; i < radGridView4.Rows.Count; i++)
{
DateTime executionTime = Convert.ToDateTime(radGridView4.Rows[i].Cells[10].Value.ToString());
ScheduleAction(action, executionTime);
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
public async void ScheduleAction(Action action, DateTime ExecutionTime)
{
try
{
if (DateTime.Now < ExecutionTime)//ExecutionTime only create an alarm for rows that are later than now
{
await Task.Delay((int)ExecutionTime.Subtract(DateTime.Now).TotalMilliseconds);
action();
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
public void action()
{
RadDesktopAlert Alert;
for (int i = 0; i < radGridView4.Rows.Count; i++)
{
DateTime executionTime = Convert.ToDateTime(radGridView4.Rows[i].Cells[10].Value.ToString());
if (DateTime.Now.Date == executionTime.Date && DateTime.Now.Hour == executionTime.Hour && DateTime.Now.Minute == executionTime.Minute)
{
Alert = new RadDesktopAlert();
firma = radGridView4.Rows[i].Cells[2].Value.ToString();
Alert.CaptionText = "Telefonmøde";
Alert.ContentText = firma;
Alert.Show();
}
}
}
任何帮助赞赏,并且没有try语句也没有错误。
在此先感谢!问题的
我想这块代码应该在按钮右边? var scheduledExecutionTimes = new List(); for(int i = 0; i
Taco2
问题是我需要它支持相同的日期/时间值,但是只能再次显示报警,您的代码很鼓舞人心,但是我们可以以某种方式做到这一点,以支持我的需求吗? – Taco2
在研究完你的代码后,我意识到我可以删除if(!scheduledExecutionTimes.Contains(executionTime))行来实现我想要的。非常感谢很多人一直在为此工作数日! – Taco2