加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何检查我的PC是否退出睡眠模式

发布时间:2020-12-15 22:53:47 所属栏目:百科 来源:网络整理
导读:我可以找到的所有资源,解释如何检查PC是否处于睡眠模式使用.NET Framework,但我必须使用.NET Core,因为我的应用程序必须是跨平台的. 我想复制下面需要.NET Framework的东西,并且可以检查PC是否处于睡眠模式 SystemEvents.PowerModeChanged += OnPowerChange;
我可以找到的所有资源,解释如何检查PC是否处于睡眠模式使用.NET Framework,但我必须使用.NET Core,因为我的应用程序必须是跨平台的.

我想复制下面需要.NET Framework的东西,并且可以检查PC是否处于睡眠模式

SystemEvents.PowerModeChanged += OnPowerChange;

private void OnPowerChange(object s,PowerModeChangedEventArgs e) 
{
    switch ( e.Mode ) 
    {
        case PowerModes.Resume: 
        break;
        case PowerModes.Suspend:
        break;
    }
}

有没有一个纯粹使用.NET Core的解决方案,还是有一个用C/C++编写的DLL我可以导入和使用?

解决方法

依赖于睡眠模式的代码的主要问题是每个平台都以不同的方式定义它,所以没有内置的解决方案(至少没有一个人知道)

我最好的猜测是如何编写一个简单的库,它将从当前系统获得电源状态,并将其映射到您自己的枚举.

该库需要检查它正在运行的系统,你可以使用它

System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform()

那会给你一个:

OSPlatform.Windows
OSPlatform.OSX
OSPlatform.Linux

然后,您将针对每种情况使用特定于平台的代码.所以:

对于Windows – 带有SystemEvents.PowerModeChanged的Microsoft.Win32.SystemEvents

Linux的低级代码,遗憾的是我不知道具体的解决方案,所以我所能做的就是给你一个解释Linux内核中睡眠状态的链接:
https://www.kernel.org/doc/html/v4.18/admin-guide/pm/sleep-states.html

至于OSX,我也不知道.我的第一个猜测是它应该与Linux案例类似,但也许有一些库为你做这件事.

在任何情况下,对于Linux和OSX,您将需要使用外部C/C++库来为您提供睡眠状态,并将其映射到您的枚举.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读