c# - 在 Window CE 中禁用挂起

标签 c# visual-studio-2008 windows-ce power-management

我的系统要求应用程序始终运行。

我已将 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\Timeouts] 中的所有注册表设置设置为 0(我被告知应该禁用超时)。

系统仍处于挂起状态,我们在 Windows CE 6.0 R3 上以完全电源管理模式运行。

最佳答案

就像 AAT 的答案一样,您必须触发重新加载事件。工作实现如下:

    private static void DoAutoResetEvent()
    {
        string eventString = "PowerManager/ReloadActivityTimeouts";

        IntPtr newHandle = CreateEvent(IntPtr.Zero, false, false, eventString);
        EventModify(newHandle, (int)EventFlags.EVENT_SET);
        CloseHandle(newHandle);
    }

    private enum EventFlags
    {
        EVENT_PULSE = 1,
        EVENT_RESET = 2,
        EVENT_SET = 3
    }

    [DllImport("coredll.dll", SetLastError = true)]
    private static extern IntPtr CreateEvent(IntPtr lpEventAttributes, bool bManualReset, bool bInitialState, string lpName);

    [DllImport("coredll")]
    static extern bool EventModify(IntPtr hEvent, int func);

    [DllImport("coredll.dll", SetLastError = true)]
    private static extern bool CloseHandle(IntPtr hObject);

关于c# - 在 Window CE 中禁用挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8826606/

相关文章:

sql-server - Excel转储需要很长时间

c - 将多线程window ce app移植到win32

c# - 通过使用准备语句在 C# 中查询 Utf-8

c# - Ninject Singleton 范围内部控制台应用程序

c# - 当结构仅在运行时已知时,将结构从 C++ 传递到 C#

c# - 如何通过 Windows 应用商店分发 DeskBand

c++ - clapack.h 或 Visual Studio 2008 中的模板数值工具包

c++ - 声明和访问全局对象

visual-studio - 安装 WinCE 5.0 Platform Builder SDK - 使用 Visual Studio 2012 或更高版本构建代码

c++ - WEC7中如何断开与Connection Manager的连接