`

单线程使用 CreateWaitableTimer 和 SetWaitableTimer 设置定时周期

阅读更多

原文及更多内容:http://yysource.sourceforge.net/?p=91

一开始的想法是用 CreateWaitableTimer 和 SetWaitableTimer 设置一个定时器,要求每500毫秒报时一次。

代码中用 

  代码1:while (WaitForSingleObject(hTimer, INFINITE) == WAIT_OBJECT_0){...} 

来等待定时器。

其中 CreateWaitableTimer 函数有些需要说明的地方。bManualReset 这个参数的作用,决定了定时器是人工重置的,还是自动重置。

  如果是设为TRUE,那么只要第一次被激活后,以后不论何时,代码1中 WaitForSingleObject 返回的结果都是 WAIT_OBJECT_0。

  如果设为FALSE,那么第一次激活后,立刻失效,以后每隔500毫秒才会被激活一次,即,代码1中 WaitForSingleObject 每隔500毫秒才会返回一次 WAIT_OBJECT_0 。


0
0
分享到:
评论

相关推荐

    VB中SetWaitableTimer函数与Sleep函数延时效果测试

    在测试这两个函数的延时效果时,我们可以创建一个VB程序,分别使用Sleep和SetWaitableTimer设置相同的延时时间,然后记录实际的执行时间。测试可能包括多次运行,以获取平均值,因为系统负载和其他因素可能会影响...

    不依赖窗口的单线程Timer

    在实现上,CMyTimer可能使用了操作系统提供的其他定时服务,如SetTimer函数或者CreateWaitableTimer,这些API允许开发者在不依赖窗口消息的情况下创建定时器。它们会在设定的时间间隔后触发一个事件,而这个事件可以...

    VS2010使用MFC编写闹钟和定时关机程序(附源码)

    在Windows API中,我们可以使用`CreateWaitableTimer`和`SetWaitableTimer`函数来创建和设置一个等待定时器。当定时器到期时,可以调用`Shutdown`或`InitiateSystemShutdown`函数来执行关机操作。当然,为了用户友好...

    定时关机程序luokang.rar

    1. **计划任务API**:在Windows操作系统中,开发者可以利用计划任务API(如CreateWaitableTimer和SetWaitableTimer)来创建和设置定时器。这些API允许程序在指定时间点触发特定事件,例如在此例中,就是启动关机操作...

    (VB)系统定时关机

    实现系统自动定时关机的关键在于调用Windows API中的`CreateWaitableTimer`、`SetWaitableTimer`和`CloseHandle`这三个函数。下面详细解释这些函数的作用以及如何在VB中使用它们。 1. **`CreateWaitableTimer`**: ...

    SetWaitableTimer_test.rar_单片机开发_Visual_C++_

    SetWaitableTimer是Windows API中的一个函数,常用于在多线程编程中创建和管理定时器。这个函数在单片机开发以及Visual C++编程环境中非常有用,因为它提供了精确的时间控制,这对于实时系统或者需要定时执行任务的...

    定时关机C++

    为了实现定时关机,C++程序员可能会使用到Windows API,特别是那些与计划任务和系统时间相关的函数,如SetWaitableTimer或CreateWaitableTimer等,这些API能允许程序设置一个定时器并在达到预设时间时触发一个事件。...

    VC系统相关定时功能

    在VC++编程环境中,系统相关的定时功能是开发者经常会遇到的需求,尤其在开发实时性或周期性任务时。本文将深入探讨VC++中如何实现定时功能,以及如何利用...在使用过程中,要充分考虑性能、线程安全和程序的可维护性。

    vc++实现的定时关机软件

    相反,开发者可能会使用`CreateWaitableTimer`来创建一个可等待的定时器,并通过`SetWaitableTimer`设置定时器的触发时间。当定时器触发时,会调用预先注册的回调函数,这个回调函数可以执行关机命令,如调用`...

    C#实现的定时关机程序

    具体来说,我们需要使用`CreateWaitableTimer`、`SetWaitableTimer`和`CloseHandle`等API来创建和设置定时器,并在时间到达时触发关机操作。 1. **项目创建与布局设计** - 打开Visual Studio 2010,创建一个新的...

    API之进程和线程函数

    3. **GetThreadPriority** 和 **SetThreadPriority**:获取和设置线程的优先级,影响线程在CPU调度中的位置。 4. **WaitForSingleObject** 和 **WaitForMultipleObjects**:用于等待一个或多个线程对象变为可等待...

    定时关机小软件

    例如,它可能会使用"CreateWaitableTimer"创建一个等待计时器,然后使用"SetWaitableTimer"设置计时器的到期时间,当到达设定时间时,程序会触发一个事件,进而调用"InitiateSystemShutdown"函数来关闭计算机。...

    定时关机程序及源代码下载

    在Windows系统中,可以使用Windows API函数如`SetTimer`或`CreateWaitableTimer`来设置定时事件。当定时事件触发时,程序会调用相应的回调函数,执行关机操作。在Linux或Unix系统中,可以利用`alarm`、`sleep`或`...

    C语言写的电脑定时关机程序

    在Windows系统中,这可能是通过`CreateWaitableTimer`、`SetWaitableTimer`等函数来创建并设置一个定时器,然后调用`ExitWindowsEx`或`InitiateSystemShutdown`函数来实现关机操作。 在压缩包的文件列表中,...

    VC++使用定时器

    全局定时器的创建和管理较为复杂,通常需要使用CreateWaitableTimer和SetWaitableTimer函数。全局定时器适合跨线程或后台任务,但不适合简单UI更新。 五、计时器事件处理 1. 回调函数:可以设置一个回调函数,当...

    VC++定时关机程序

    在Windows操作系统中,开发者可以使用`CreateWaitableTimer`函数创建一个可等待的定时器对象,然后使用`SetWaitableTimer`函数设定定时器的触发时间。在设定的时刻到达时,定时器会触发一个事件,此时程序可以通过...

    win32多线程编程.rar

    - **CreateWaitableTimer / SetWaitableTimer**:定时器对象可以用来调度线程在特定时间执行。 4. **线程优先级** - **SetThreadPriority**:可以改变线程的执行优先级,但过度依赖优先级可能导致优先级反转和...

    VB定时关机(代码)

    【VB定时关机(代码)】是一个使用Visual Basic 2010开发的应用程序,它提供了定时自动关机、重启或注销计算机的功能。在本文中,我们将深入探讨VB语言、VB2010版本以及如何利用它来实现定时任务,特别是计算机的...

    C语言定时关机源代码与应用程序

    例如,我们可以使用`CreateWaitableTimer`创建一个可等待的定时器,然后用`SetWaitableTimer`设置定时器的到期时间,最后通过`WaitForSingleObject`或`SleepEx`来等待定时器到期。当定时器到期时,系统会触发一个...

    C# 开发的小程序实现定时关机

    以上就是使用C#开发定时关机小程序的基本思路和关键步骤。通过理解和掌握这些知识点,你可以根据自己的需求定制更复杂的功能,比如添加用户界面、设置提醒、提供多定时任务等。在学习和实践过程中,建议参考.NET ...

Global site tag (gtag.js) - Google Analytics