3

我正在构建一个应用程序监控服务来写入事件日志,这样我就可以大致了解计算机的使用频率。我可以安装该服务,当我尝试运行它时出现此错误:

“本地计算机上的应用程序监视器服务启动然后停止。某些服务如果没有工作会自动停止,例如性能日志和警报服务。”

我尝试了一个while循环,鼠标活动等等......但它一直在结束。关于我能做什么的任何想法?

    public ApplicationMonitor()
    {
        InitializeComponent();
        if (!System.Diagnostics.EventLog.SourceExists("Activity Usage"))
        {
            System.Diagnostics.EventLog.CreateEventSource("Activity Usage", "Computer Log");
        }

        eventLog1.Source = "Activity Usage";
        eventLog1.Log = "Computer Log";
    }

    protected override void OnStart(string[] args)
    {
        eventLog1.WriteEntry("In OnStart");
    }

    protected override void OnStop()
    {
        eventLog1.WriteEntry("In onStop.");
    }

    protected override void OnContinue()
    {
        eventLog1.WriteEntry("In OnContinue.");
    }
4

1 回答 1

3

因为没有活动线程。

您需要在服务的“OnStart”方法中启动执行轮询的线程。否则,当 OnStart 方法完成时,应用程序中没有活动线程,.Net CLR 将关闭应用程序。

即使线程只是每 30 秒进行一次线程睡眠,它也必须处于活动状态才能使应用程序保持打开状态。

于 2012-08-16T23:08:43.243 回答