我正在制作一个在后台运行的程序,并且在一天中的特定时间会弹出一个窗口,其中包含锻炼说明。 (对于我工作的上班族)
问题是:当练习说明到时,我想要弹出一个消息框,询问你是否准备好了。 我在“if(blabla == true)”中有这个消息框代码,所以它会不断发送垃圾邮件。
我该如何避免这种情况?我看不到任何其他地方放置信息框。
基本上是:
if (DateTime.Now.ToString("HH:mm") == "09:00")
{
progress = true;
}
if(progress == true)
{
DialogResult dialogResult = MessageBox.Show("Start?", "Bla Bla", MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
exercise.Action();
}
}
有没有办法让Dialog在同一个地方,但它出现一次?会让我的项目变得如此简单。
谢谢!
答案 0 :(得分:1)
这不是C#或WinForms问题,而是算法问题。首先尝试设计算法,然后将其转换为您选择的编程语言。
以下内容(伪代码,假设您希望每隔一小时打断一次人员):
nextHour = 9
loop forever:
if now = nextHour:00
show message box
if answer = yes
exercise
nextHour++
else
sleep for a minute
在显示消息框一次后,这会将nextHour
从9增加到10。
实际上还有另一种选择:您要实现的是调度程序,这是一个在特定时间执行特定操作的程序。 Windows已包含调度程序Windows Task Scheduler。
因此,您可以使程序看起来像这样:
,而不是重新发明轮子show message box
if answer = yes
exercise
将其编译为exe并将Windows任务计划程序设置为每小时运行一次(或用户期望的任何频率)。