我有一个系统,要求该应用程序始终运行。

我已经将[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# - 在Windows CE中禁用挂起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8826606/

10-13 01:14