应用程序在启动时显示在进程树中但未实际运行

时间:2014-09-26 23:03:11

标签: c# timer startup

我创建了一个程序来检查系统时间,将该时间写入文件,如果已经过了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
            }
        }
    }

请澄清出现了什么问题。我已经检查了注册表

1 个答案:

答案 0 :(得分:0)

尝试为触发时间文件设置绝对路径。如果你只是称它为"时间"它相对于您启动程序的工作目录保存。 Windows的自动启动将在另一个目录中启动,因此将无法找到您的触发时间文件。