程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#的多線程機制探索(10)

C#的多線程機制探索(10)

編輯:關於C語言
面這段程序演示了Timer類的用法。

  using System;
  using System.Threading;
  class TimerExampleState
  {
  public int counter = 0;
  public Timer tmr;
  }
  class App
  {
  public static void Main()
  {
    TimerExampleState s = new TimerExampleState();
    //創建代理對象TimerCallback,該代理將被定時調用
    TimerCallback timerDelegate = new TimerCallback(CheckStatus);
    //創建一個時間間隔為1s的定時器
    Timer timer = new Timer(timerDelegate, s,1000, 1000);
    s.tmr = timer;
    //主線程停下來等待Timer對象的終止
    while(s.tmr != null)
    Thread.Sleep(0);
    Console.WriteLine("Timer example done.");
    Console.ReadLine();
  }
  file://下面是被定時調用的方法
  static void CheckStatus(Object state)
  {
    TimerExampleState s =(TimerExampleState)state;
    s.counter++;
    Console.WriteLine("{0} Checking Status {1}.",DateTime.Now.TimeOfDay, s.counter);
    if(s.counter == 5)
    {
    file://使用Change方法改變了時間間隔
    (s.tmr).Change(10000,2000);
    Console.WriteLine("changed...");
    }
    if(s.counter == 10)
    {
    Console.WriteLine("disposing of timer...");
    s.tmr.Dispose();
    s.tmr = null;
    }
  }
  }

程序首先創建了一個定時器,它將在創建1秒之後開始每隔1秒調用一次CheckStatus()方法,當調用5次以後,在CheckStatus()方法中修改了時間間隔為2秒,並且指定在10秒後重新開始。當計數達到10次,調用Timer.Dispose()方法刪除了timer對象,主線程於是跳出循環,終止程序。程序執行的結果如下:

上面就是對ThreadPool和Timer兩個類的簡單介紹,充分利用系統提供的功能,可以為我們省去很多時間和精力——特別是對很容易出錯的多線程程序。同時我們也可以看到.Net Framework強大的內置對象,這些將對我們的編程帶來莫大的方便。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved