C#マルチスレッド学習(5)マルチスレッド自動管理(タイマー)

タイマークラス:タイマーを設定して、ユーザー指定の関数を定期的に実行します。
              タイマーが開始すると、システムは自動的に新しいスレッドを作成して、ユーザーが指定した機能を実行します。

Timerオブジェクトを初期化します:
Timer timer = new Timer(timerDelegate、s、1000、1000);

//最初のパラメーター:実行するメソッドを示すTimerCallbackデリゲートを指定します;
// 2番目のパラメーター:含むメソッド使用される情報のオブジェクト、またはnull参照;

// 3番目のパラメーター:遅延時間-時間の開始から現在の時間までの時間(ミリ秒単位)。 "0"と指定すると、タイマーがすぐに開始されます;
// 4番目パラメータ:タイマーの時間間隔-タイミングの開始後、非常に長い期間ごとに、TimerCallbackで表されるメソッドがミリ秒単位で1回呼び出されます。定期的な終了を無効にするには、Timeout.Infiniteを指定します。

Timer.Change()メソッド:タイマー設定を変更します。(これはパラメーター型オーバーロードのメソッドです)
使用例:  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(); // プロキシオブジェクトTimerCallbackを作成しますエージェントは、          TimerCallback と呼ばれますtimerDelegate  = new  TimerCallback(CheckStatus); //    
      



    


      
   

 

          

 

            
1秒のインターバルタイマ作成             タイマタイマ  = 新しい新しい タイマー(timerDelegate、S、1000年、  1000 );             s.tmr  =  タイマーを; // 終了するタイマーオブジェクトの停止および待機のメインスレッドしばらく(s.tmr  != ヌル             Thread.Sleep(0 );             Console.WriteLine(" Timer example done。" );             Console.ReadLine();       } // 以下は定期的に呼び出されるメソッドですstatic void  CheckStatus(Object state)       {             TimerExampleState s  =
 


            

              





      

        

(TimerExampleState)state;
            s.counter
++ ;
            Console.WriteLine(
" {0}ステータスの確認{1}。 " 、DateTime.Now.TimeOfDay、s.counter);

            
もし (s.counter  == 5             { // 使用変更方法改变了时间间隔                (s.tmr).Change(10000 2000 )。                 Console.WriteLine(" changed " );             } if (s.counter  == 10             {                 Console.WriteLine("  

                





            
 

タイマーの                 破棄 " );
s.tmr.Dispose();
                s.tmr 
= null ;             }       }     } }  




  プログラムは最初にタイマーを作成し、1秒間作成された後、1秒ごとにCheckStatus()メソッドを呼び出します。5回呼び出されると、CheckStatus()メソッドで時間間隔が2秒に変更され、指定されます10秒後にもう一度開始します。カウントが10回に達すると、Timer.Dispose()メソッドが呼び出されてタイマーオブジェクトが削除されるため、メインスレッドがループからジャンプしてプログラムを終了します。

著者:XuGangスクリーン名:スチールスチール
出典:http//xugang.cnblogs.com
免責事項:この記事の著作権は作者とブログパークに属します!再印刷するときは、この段落のステートメントを保持する必要があり、元のテキストリンクは記事ページの明確な位置に配置する必要があります。
元の記事を28件公開 15のような 110,000以上の訪問

おすすめ

転載: blog.csdn.net/z3h0a5n8g8x9i9a2o3/article/details/8598626