垃圾邮件箱c#

时间:2014-01-24 07:19:37

标签: c# winforms

我正在制作一个在后台运行的程序,并且在一天中的特定时间会弹出一个窗口,其中包含锻炼说明。 (对于我工作的上班族)

问题是:当练习说明到时,我想要弹出一个消息框,询问你是否准备好了。 我在“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在同一个地方,但它出现一次?会让我的项目变得如此简单。

谢谢!

1 个答案:

答案 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任务计划程序设置为每小时运行一次(或用户期望的任何频率)。