微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我可以找到的所有资源,解释如何检查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.Runtime@R_139_404[email protected]()

那会给你一个

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++库来为您提供睡眠状态,并将其映射到您的枚举.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐