当前位置:   article > 正文

c#实现每隔一段时间执行代码(多线程)_c#每隔0.5s分别发送

c#每隔0.5s分别发送

总结以下三种方法,实现c#每隔一段时间执行代码:

方法一:调用线程执行方法,在方法中实现死循环,每个循环Sleep设定时间;

方法二:使用System.Timers.Timer类;

方法三:使用System.Threading.Timer;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using  System;
using  System.Collections;
using  System.Threading;
 
public  class  Test
{
 
     public  static  void  Main()
     {
         Test obj = new  Test();
         Console.WriteLine(Thread.CurrentThread.ManagedThreadId.ToString());
 
         //方法一:调用线程执行方法,在方法中实现死循环,每个循环Sleep设定时间
         Thread thread = new  Thread( new  ThreadStart(obj.Method1));
         thread.Start();
 
 
         //方法二:使用System.Timers.Timer类
         System.Timers.Timer t = new  System.Timers.Timer(100); //实例化Timer类,设置时间间隔
         t.Elapsed += new  System.Timers.ElapsedEventHandler(obj.Method2); //到达时间的时候执行事件
         t.AutoReset = true ; //设置是执行一次(false)还是一直执行(true)
         t.Enabled = true ; //是否执行System.Timers.Timer.Elapsed事件
         while  ( true )
         {
             Console.WriteLine( "test_"  + Thread.CurrentThread.ManagedThreadId.ToString());
             Thread.Sleep(100);
         }
 
 
         //方法三:使用System.Threading.Timer
         //Timer构造函数参数说明:
         //Callback:一个 TimerCallback 委托,表示要执行的方法。
         //State:一个包含回调方法要使用的信息的对象,或者为空引用(Visual Basic 中为 Nothing)。
         //dueTime:调用 callback 之前延迟的时间量(以毫秒为单位)。指定 Timeout.Infinite 以防止计时器开始计时。指定零 (0) 以立即启动计时器。
         //Period:调用 callback 的时间间隔(以毫秒为单位)。指定 Timeout.Infinite 可以禁用定期终止。
         System.Threading.Timer threadTimer = new  System.Threading.Timer( new  System.Threading.TimerCallback(obj.Method3), null , 0, 100);
         while  ( true )
         {
             Console.WriteLine( "test_"  + Thread.CurrentThread.ManagedThreadId.ToString());
             Thread.Sleep(100);
         }
 
         Console.ReadLine();
     }
 
 
     void  Method1()
     {
         while  ( true )
         {
             Console.WriteLine(DateTime.Now.ToString() + "_"  + Thread.CurrentThread.ManagedThreadId.ToString());
             Thread.CurrentThread.Join(100); //阻止设定时间
         }
     }
 
 
     void  Method2( object  source, System.Timers.ElapsedEventArgs e)
     {
         Console.WriteLine(DateTime.Now.ToString() + "_"  + Thread.CurrentThread.ManagedThreadId.ToString());
     }
 
 
     void  Method3(Object state)
     {
         Console.WriteLine(DateTime.Now.ToString() + "_"  + Thread.CurrentThread.ManagedThreadId.ToString());
     }
}
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/436620
推荐阅读
相关标签
  

闽ICP备14008679号