내 UWP 앱에서 "kernel32.dll"의 SetWaitableTimer를 사용합니다. 내 응용 프로그램 때문에 컴퓨터가 잠자기에서 깨어나기를 원합니다. 디버그 모드에서 앱을 실행하면 제대로 작동합니다. 릴리스 모드에서 실행하면 컴퓨터가 깨어나지 않습니다.유니버설 윈도우 플랫폼에서 SetWaitableTimer 사용하기
실현 모드에서 응용 프로그램이 컴퓨터를 깨우도록하려면 어떻게합니까?
private void Button_Click(object sender, RoutedEventArgs e)
{
Task.Factory.StartNew(SetWaitForWakeUpTime);
}
[DllImport("kernel32.dll")]
public static extern IntPtr CreateWaitableTimer(IntPtr lpTimerAttributes, bool bManualReset, string lpTimerName);
[DllImport("kernel32.dll")]
public static extern bool SetWaitableTimer(IntPtr hTimer, [In] ref long pDueTime, int lPeriod,
IntPtr pfnCompletionRoutine, IntPtr lpArgToCompletionRoutine, bool fResume);
[DllImport("kernel32.dll", SetLastError = true)]
public static extern Int32 WaitForSingleObject(IntPtr handle, uint milliseconds);
static IntPtr handle;
static void SetWaitForWakeUpTime()
{
long duetime = -600000000;
handle = CreateWaitableTimer(IntPtr.Zero, true, "MyWaitabletimer");
SetWaitableTimer(handle, ref duetime, 0, IntPtr.Zero, IntPtr.Zero, true);
uint INFINITE = 0xFFFFFFFF;
int ret = WaitForSingleObject(handle, INFINITE);
}