C#睡眠检测电源模式已更改

C#睡眠检测电源模式已更改,c#,C#,我想让我的程序在计算机进入睡眠状态时写入控制台,但我无法这样做。我想这是我设置的错误。这是我所拥有的 编辑:新建.cs文件 using LightFX; using System; using System.Threading; using System.Text; using Microsoft.Win32; using ConsoleApplication3; namespace SampleApp5 { class Program { static voi

我想让我的程序在计算机进入睡眠状态时写入控制台,但我无法这样做。我想这是我设置的错误。这是我所拥有的

编辑:新建.cs文件

using LightFX;
using System;
using System.Threading;
using System.Text;
using Microsoft.Win32;
using ConsoleApplication3;

namespace SampleApp5
{
    class Program
    {
        static void Main()
        {
           
        }

        SystemEvents.PowerModeChanged += PowerModeChanged;
    }
    class PowerModeChanged
    {

    }
}

该事件由类引发(它是一个静态事件)。您只需要绑定到它:

SystemEvents.PowerModeChanged += OnPowerModeChanged;
您需要在主方法中的某个位置执行此操作

当然,还要删除自定义委托,因为它已经由框架定义。您不需要这一行:

公共静态事件PowerModeChangedEventHandler 电源模式改变

更新:

    static void Main()
    {
       SystemEvents.PowerModeChanged += OnPowerModeChanged;
       Console.ReadLine(); //just wait, don't exit immediately.
    }

    private static void OnPowerModeChanged(object sender, PowerModeChangedEventArgs e) 
    {
        //Handle the event here.
    }

你可能已经找到了你要找的东西,但是。。 此代码适用于我:

using System;
using Microsoft.Win32;


class Powerstatus
{
static void Main(string[] args)
{
    SystemEvents.PowerModeChanged +=
        new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged);
    Console.ReadLine();
}

static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
    Console.WriteLine(e.Mode);
}

}

这不管用吗当我输入“SystemEvents.PowerModeChanged+=PowerModeChanged;”时,.PowerModeChanged上出现一个错误,表示它是一个用作类型的事件。这是什么意思?@jister:你删除事件定义了吗?此外,您可能需要考虑将事件处理程序/方法重命名为代码> PoPoMeDeDebug 到<代码> OnPotoMyDeDebug 。仍然有一个错误。PowerModeChanged是一个事件,但使用起来像type@jister:请参阅更新。我觉得您不太熟悉基本的C#编程,也不太熟悉基于事件的编程模型。在继续之前,您可能应该对此进行一些阅读。不要为此创建控制台应用程序,只需使用不创建/显示任何窗体的Windows窗体应用程序即可。更容易保持运行,并且不显示不必要的控制台窗口。