欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#多線程學(xué)習(xí)之(五)使用定時器進(jìn)行多線程的自動管理

 更新時間:2015年04月07日 10:10:27   作者:樂樂010  
這篇文章主要介紹了C#多線程學(xué)習(xí)之使用定時器進(jìn)行多線程的自動管理,實例分析了C#使用timer定時器類實現(xiàn)針對多線程的自動管理功能,非常具有實用價值,需要的朋友可以參考下

本文實例講述了C#多線程學(xué)習(xí)之使用定時器進(jìn)行多線程的自動管理。分享給大家供大家參考。具體分析如下:

Timer類:設(shè)置一個定時器,定時執(zhí)行用戶指定的函數(shù)。

定時器啟動后,系統(tǒng)將自動建立一個新的線程,執(zhí)行用戶指定的函數(shù)。

初始化一個Timer對象:

Timer timer = new Timer(timerDelegate, s,1000, 1000);

第一個參數(shù):指定了TimerCallback 委托,表示要執(zhí)行的方法;
第二個參數(shù):一個包含回調(diào)方法要使用的信息的對象,或者為空引用;
第三個參數(shù):延遲時間——計時開始的時刻距現(xiàn)在的時間,單位是毫秒,指定為“0”表示立即啟動計時器;
第四個參數(shù):定時器的時間間隔——計時開始以后,每隔這么長的一段時間,TimerCallback所代表的方法將被調(diào)用一次,單位也是毫秒。指定 Timeout.Infinite 可以禁用定期終止。

Timer.Change()方法:修改定時器的設(shè)置。(這是一個參數(shù)類型重載的方法)
使用示例: 

timer.Change(1000,2000);

Timer類的程序示例(來源:MSDN):

using System;
using System.Threading;
namespace ThreadExample
{
 class TimerExampleState 
 {
 public int counter = 0;
 public Timer tmr;
 }
 class App 
 {
 public static void Main()
 {
 TimerExampleState s = new TimerExampleState();
 //創(chuàng)建代理對象TimerCallback,該代理將被定時調(diào)用
 TimerCallback timerDelegate = new TimerCallback(CheckStatus);
  //創(chuàng)建一個時間間隔為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();
 }
 //下面是被定時調(diào)用的方法
 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)
  {
  //使用Change方法改變了時間間隔
  (s.tmr).Change(10000,2000);
  Console.WriteLine("changed");
  }
  if(s.counter == 10)
  {
  Console.WriteLine("disposing of timer");
  s.tmr.Dispose();
  s.tmr = null;
  }
 }
 }
}

程序首先創(chuàng)建了一個定時器,它將在創(chuàng)建1秒之后開始每隔1秒調(diào)用一次CheckStatus()方法,當(dāng)調(diào)用5次以后,在CheckStatus()方 法中修改了時間間隔為2秒,并且指定在10秒后重新開始。當(dāng)計數(shù)達(dá)到10次,調(diào)用Timer.Dispose()方法刪除了timer對象,主線程于是跳 出循環(huán),終止程序。

希望本文所述對大家的C#程序設(shè)計有所幫助。

相關(guān)文章

  • Visual C#類的定義及實現(xiàn)方法實例解析

    Visual C#類的定義及實現(xiàn)方法實例解析

    這篇文章主要介紹了Visual C#類的定義及實現(xiàn)方法實例解析,對于新手來說有不錯的借鑒學(xué)習(xí)價值,需要的朋友可以參考下
    2014-07-07
  • FileStream常用的屬性與方法總結(jié)

    FileStream常用的屬性與方法總結(jié)

    本篇文章主要是對FileStream常用的屬性與方法進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • C#執(zhí)行存儲過程并將結(jié)果填充到GridView的方法

    C#執(zhí)行存儲過程并將結(jié)果填充到GridView的方法

    這篇文章主要介紹了C#執(zhí)行存儲過程并將結(jié)果填充到GridView的方法,結(jié)合實例形式分析了C#存儲過程操作及GridView控件相關(guān)操作技巧,需要的朋友可以參考下
    2017-02-02
  • C#泛型運(yùn)作原理的深入理解

    C#泛型運(yùn)作原理的深入理解

    這篇文章主要給大家介紹了關(guān)于C#泛型運(yùn)作原理的深入理解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Unity實現(xiàn)動物識別的示例代碼

    Unity實現(xiàn)動物識別的示例代碼

    本文主要介紹了如何通過Unity實現(xiàn)動物識別,可以實現(xiàn)識別近八千種動物,接口返回動物名稱,并可獲取識別結(jié)果對應(yīng)的百科信息,感興趣的可以了解一下
    2022-02-02
  • C#操作RabbitMQ的完整實例

    C#操作RabbitMQ的完整實例

    這篇文章主要為大家詳細(xì)介紹了C#操作RabbitMQ的完整實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 基于C#實現(xiàn)簡單的隨機(jī)抽獎小程序

    基于C#實現(xiàn)簡單的隨機(jī)抽獎小程序

    臨近春節(jié),大街小巷的地方都有抽獎活動,那么基于C#是如何實現(xiàn)簡單的抽獎程序的呢,下面小編給大家分享了具體代碼,有需要的朋友參考下
    2016-01-01
  • C# 使用Serilog日志框架的方法

    C# 使用Serilog日志框架的方法

    Serilog是一款配置方便,使用靈活的日志框架,這篇文章主要介紹了C# 使用Serilog日志框架,需要的朋友可以參考下
    2023-11-11
  • 探討c#中的unchecked是什么意思,起什么作用?

    探討c#中的unchecked是什么意思,起什么作用?

    本篇文章是對c#中的unchecked進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 簡單對比C#程序中的單線程與多線程設(shè)計

    簡單對比C#程序中的單線程與多線程設(shè)計

    這篇文章主要介紹了C#程序中的單線程與多線程設(shè)計的簡單對比,通過實際的代碼演示可以清晰看出多線程并發(fā)來避免單線程阻塞問題的特點,需要的朋友可以參考下
    2016-04-04

最新評論