繁体   English   中英

C# Windows 服务无法将关闭事件记录到远程 API

[英]C# Windows Service Fails To Log Shutdown Event to Remote API

我正在生成一个 C# windows 服务来记录特定的 windows 事件。 虽然它们中的大多数都很好(登录/关闭、锁定/解锁等),但我在 Windows 断电类型事件方面遇到了一些问题。 我正在尝试的代码如下(摘自其他地方的其他建议)。

对于服务:-

public Service()
        {
            InitializeComponent();
            SystemEvents.SessionEnded += new SessionEndedEventHandler(SystemEvents_SessionEnded);
            SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged);

        }

对于 SystemEvents_SessionEnded:-

void SystemEvents_SessionEnded(object sender, SessionEndedEventArgs e)
        {
            switch (e.Reason)
            {
                case SessionEndReasons.SystemShutdown:
                    eventType = 7;
                    break;
                case SessionEndReasons.Logoff:
                    eventType = 2;
                    break;
                default:
                    break;
            }

            \\Send eventType and current DateTime to remote API
        }

对于 SystemEvents_PowerModeChanged

static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
        {
            switch (e.Mode)
            {
                case PowerModes.Suspend:
                    eventType = 5;
                    break;
                case PowerModes.Resume:
                    eventType = 6;
                    break;
                default:
                    break;
            }

            \\Send eventType and current Datetime to API
        }

由于 API 托管在本地计算机外部,我假设我的服务依赖于其他人通过网络发送数据? 关于是否是我的代码失败或我是否需要更好的依赖项设置的任何建议?

提前致谢。

SessionEnded Docs说:

仅当消息泵正在运行时才会引发此事件。 在 Windows 服务中,除非使用隐藏表单或手动启动消息泵,否则不会引发此事件。 有关显示如何在 Windows 服务中使用隐藏表单来处理系统事件的代码示例,请参阅SystemEvents class。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM