我正在尝试创建一个脚本,它会在1天后显示弹出窗口。据我所知,我可以使用Thread.Stop或使用System.Timers或许多其他方式。但每个问题都是计算机必须连续运行这些方法中的每一种,以便在我想要的时候给出所需的结果。基本上我希望脚本从安装我的程序开始,等待24小时,然后显示一个消息框。如果计算机在那时开启,即24小时后,它应该在下次启动时显示消息框,但仅在24小时或更长时间后才会显示。请帮助,我无法找到合适的解决方案。任何帮助将受到高度赞赏。我认为可以通过获取dateTime.Now并将其放入文件中,然后将当前系统时间与文件中的每小时左右的时间进行比较来实现,如果已经过了24小时或更长时间,则显示消息框。请帮忙
答案 0 :(得分:1)
如果我理解正确,您可以使用的方法是保存"开始日期"。您可以保存计时器的开始日期并从脚本中读取值,这样您就可以计算自从将值分配给开始日期后24小时或更长时间。您可以使用简单的TXT文件来保存值。
答案 1 :(得分:1)
我认为有两种方法可以实现这一目标:
答案 2 :(得分:1)
如果您需要弹出一个消息框,那么您需要一个Windows窗体应用程序。以下是它如何工作的工作流程:
TriggerDate
条目。TriggerDate
存在,请提取此日期并将其与今天的日期和时间进行比较。如果当前日期和时间超过我们的TriggerDate
,请显示消息框。使用当前日期和时间加上24小时重新创建TriggerDate
。TriggerDate
不存在,请创建它,填充当前日期和时间加上24小时(例如DateTime.Now.AddHours(24)
)。 Threading.Thread.Sleep()
睡5分钟。修改强>
代码将是这样的:
private const string TriggerFile = @"C:\TriggerData\trigger.txt";
private DateTime _triggerDate;
if (!File.Exists(TriggerFile))
{
using (StreamWriter sw = File.CreateText(TriggerFile))
{
sw.WriteLine(DateTime.Now.AddHours(24));
}
}
using (StreamReader sr = File.OpenText(TriggerFile))
{
_triggerDate = DateTime.Parse(sr.ReadToEnd());
}
while (true)
{
if (DateTime.Now >= _triggerDate)
{
MessageBox.Show(@"Alert!");
using (StreamWriter sw = File.CreateText(TriggerFile))
{
sw.WriteLine(DateTime.Now.AddHours(24));
_triggerDate = DateTime.Now.AddHours(24);
}
}
System.Threading.Thread.Sleep(60000*5); // Sleep for 5 minutes
}
您可能不想while(true)
。你想要实现一种退出程序的方法。