我创建了一个程序来检查系统时间,将该时间写入文件,如果已经过了1小时,则通过比较文件中的时间和当前系统时间来做某事。我之所以选择这种方法是因为即使计算机在此期间关闭,我也希望这种方法能够正常工作。我已经将程序添加到注册表中启动,该程序在taskmanager进程选项卡中显示重启,但不能按预期工作。如果在此期间计算机未重新启动或关闭,则可以正常工作。请告诉我,我做错了什么。我的代码是
static void Main(string[] args)
{
try
{
RegistryKey reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\MICROSOFT\\WINDOWS\\CURRENTVERSION\\RUN", true); // Add to registry to startup automatically in case of system shutdown or restart.
reg.SetValue("Notifier", "\"" + Application.ExecutablePath.ToString() + "\"");
}
catch
{
MessageBox.Show("There was an error switching the registry key");
}
string Trigger = "time";
DateTime _triggerDate;
if (!File.Exists(Trigger))
{
using (StreamWriter sw = new StreamWriter(Trigger,true))
{
sw.Write(DateTime.Now.AddHours(1));
}
}
using (StreamReader sr = File.OpenText(Trigger))
{
_triggerDate = DateTime.Parse(sr.ReadToEnd());
}
while (true)
{
if (DateTime.Now >= _triggerDate)
{
doSomething();
break;
}
else
{
System.Threading.Thread.Sleep(120000); // Sleep for 2 minutes
}
}
}
请澄清出现了什么问题。我已经检查了注册表
答案 0 :(得分:0)
尝试为触发时间文件设置绝对路径。如果你只是称它为"时间"它相对于您启动程序的工作目录保存。 Windows的自动启动将在另一个目录中启动,因此将无法找到您的触发时间文件。