《C#多线程编程实战(原书第2版)》——3.7 使用计时器

    xiaoxiao2023-12-16  160

    本节书摘来自华章出版社《C#多线程编程实战(原书第2版)》一书中的第3章,第3.7节,作者(美)易格恩·阿格佛温(Eugene Agafonov),黄博文 黄辉兰 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

    3.7 使用计时器

    本节将描述如何使用System.Threading.Timer对象来在线程池中创建周期性调用的异步操作。

    3.7.1 准备工作

    为了学习本节,你需要安装Visual Studio 2015。除此之外无需其他准备。本节的源代码放置在BookSamplesChapter3Recipe6目录中。

    3.7.2 实现方式

    请执行以下步骤来了解如何在线程池中创建周期性调用的异步操作:

    1.启动Visual Studio 2015。新建一个C#控制台应用程序项目。

    2.在Program.cs文件中加入以下using指令:

    3.在Main方法下面加入以下代码片段:

    4.在Main方法中加入以下代码片段:

    5.运行程序。

    3.7.3 工作原理

    我们首先创建了一个Timer实例。第一个参数是一个lambda表达式,将会在线程池中被执行。我们调用TimerOperation方法并给其提供一个起始时间。由于无须使用用户状态对象,所以第二个参数为null。然后指定了什么时候会第一次运行TimerOperation,以及之后再次调用的间隔时间。所以第一个值实际上说明一秒后会启动第一次操作,然后每隔两秒再次运行。

    之后等待6秒后修改计时器。在调用_timer.Change方法一秒后启动TimerOperation,然后每隔4秒再次运行。

    计时器还可以更复杂!

    可以以更复杂的方式使用计时器。比如,可以通过Timeout.Infinite值提供给计时器一个间隔参数来只允许计时器操作一次。然后在计时器异步操作内,能够设置下一次计时器操作将被执行的时间。具体时间取决于自定义业务逻辑。

    最后等待回车键被按下以结束整个应用程序。在程序运行过程中可以看到自从程序启动后经历的时间。

    相关资源:C#多线程编程实战_中文完整版_带书签目录.pdf
    最新回复(0)