.NET多线程编程(16)——多线程的自动管理(定时器)

简介:
  Timer类:设置个定时器定时执行用户指定
  定时器启动后系统将自动建立个新线程执行用户指定
  化个Timer对象:
  Timer timer = Timer(timerDelegate, s,1000, 1000);
  // 第个参数:指定了TimerCallback 委托表示要执行思路方法;
  // 第 2个参数:个包含回调思路方法要使用信息对象或者为空引用;
  // 第 3个参数:延迟时间——计时开始时刻距现在时间单位是毫秒,指定为“0”表示立即启动计时器;
  // 第 4个参数:定时器时间间隔——计时开始以后每隔这么长段时间TimerCallback所代表思路方法将被次单位也是毫秒指定 Timeout.Infinite 可以禁用定期终止
  Timer.Change思路方法:修改定时器设置(这是个参数类型重载思路方法)
  使用举例: timer.Change(1000,2000);
  Timer类举例(来源:MSDN):
using;
using.Threading;
ThreadExample
{
  TimerExampleState
  {
    publiccounter=0;
    publicTimertmr;
  }
  App
  {
    publicvoidMain
    {
      TimerExampleStates=TimerExampleState;
      //创建代理对象TimerCallback该代理将被定时
      TimerCallbacktimerDelegate=TimerCallback(CheckStatus);
      //创建个时间间隔为1s定时器
      Timertimer=Timer(timerDelegate,s,1000,1000);
      s.tmr=timer;
      //主线程停下来等待Timer对象终止
      while(s.tmr!=null)
      Thread.Sleep(0);
      Console.WriteLine("Timerexampledone.");
      Console.ReadLine;
    }
    //下面是被定时思路方法
    voidCheckStatus(Objectstate)
    {
      TimerExampleStates=(TimerExampleState)state;
      s.counter;
      Console.WriteLine("{0}CheckingStatus{1}.",DateTime.Now.TimeOfDay,s.counter);
      (s.counter5)
      {
        //使用Change思路方法改变了时间间隔
        (s.tmr).Change(10000,2000);
        Console.WriteLine("changed……);
      }
      (s.counter10)
      {
        Console.WriteLine("disposingoftimer…");
        s.tmr.Dispose;
        s.tmr=null;
      }
    }
  }
}
  首先创建了个定时器它将在创建1秒的后开始每隔1秒次CheckStatus思路方法当5次以后在CheckStatus思路方法中修改了时间间隔为2秒并且指定在10秒后重新开始当计数达到10次Timer.Dispose思路方法删除了timer对象主线程于是跳出循环终止posted




本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/203218,如需转载请自行联系原作者

目录
相关文章
|
6天前
|
存储 Java 数据库连接
java多线程之线程通信
java多线程之线程通信
|
18天前
|
存储 缓存 NoSQL
Redis单线程已经很快了6.0引入多线程
Redis单线程已经很快了6.0引入多线程
31 3
|
20天前
|
消息中间件 安全 Linux
线程同步与IPC:单进程多线程环境下的选择与权衡
线程同步与IPC:单进程多线程环境下的选择与权衡
57 0
|
29天前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
29天前
|
安全 编译器 C#
C#学习相关系列之多线程---lock线程锁的用法
C#学习相关系列之多线程---lock线程锁的用法
|
29天前
|
Java C#
C#学习系列相关之多线程(五)----线程池ThreadPool用法
C#学习系列相关之多线程(五)----线程池ThreadPool用法
|
1月前
|
存储 安全 Java
深入理解 Java 多线程、Lambda 表达式及线程安全最佳实践
线程使程序能够通过同时执行多个任务而更有效地运行。 线程可用于在不中断主程序的情况下在后台执行复杂的任务。 创建线程 有两种创建线程的方式。 扩展Thread类 可以通过扩展Thread类并覆盖其run()方法来创建线程:
100 1
深入理解 Java 多线程、Lambda 表达式及线程安全最佳实践
|
1月前
|
并行计算 安全 Java
C# .NET面试系列四:多线程
<h2>多线程 #### 1. 根据线程安全的相关知识,分析以下代码,当调用 test 方法时 i > 10 时是否会引起死锁? 并简要说明理由。 ```c# public void test(int i) { lock(this) { if (i > 10) { i--; test(i); } } } ``` 在给定的代码中,不会发生死锁。死锁通常是由于两个或多个线程互相等待对方释放锁而无法继续执行的情况。在这个代码中,只有一个线程持有锁,且没有其他线程参与,因此不
99 3
|
1月前
|
缓存 安全 Java
保障线程安全性:构建可靠的多线程应用
保障线程安全性:构建可靠的多线程应用
|
28天前
|
数据采集 存储 Java
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!
「多线程大杀器」Python并发编程利器:ThreadPoolExecutor,让你一次性轻松开启多个线程,秒杀大量任务!