簡體   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