源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Winform基于多线程实现每隔1分钟执行一段代码

  • 时间:2021-08-12 19:43 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Winform基于多线程实现每隔1分钟执行一段代码
本文实例讲述了Winform基于多线程实现每隔1分钟执行一段代码的方法,分享给大家供大家参考。具体实现方法如下: 1.定义相关的类Timer.cs,代码如下:
[u]复制代码[/u] 代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace SMIS2013.DSS.Monitor {     public class MyTimer     {         public delegate void Elapsed(); //定义委托          public event Elapsed OnElapsed;         private long _Interval = 1000;         public long Interval         {             get { return _Interval; }             set { _Interval = value; }         }         private bool _IsStart = false;         private Thread _TimerThread;         public void Start()         {             if (_IsStart)                 return;             _IsStart = true;             _TimerThread = new Thread(new ThreadStart(DoTimer));             _TimerThread.Start();         }         public void Stop()         {             try             {                 if (!_IsStart)                     return;                 _IsStart = false;                 _TimerThread.Abort();             }             catch (Exception e)             { }         }         private void DoTimer()         {             try             {                 int last = Environment.TickCount;                 while (_IsStart)                 {                     if (Environment.TickCount - last > _Interval)                     {                         if (OnElapsed != null)                             OnElapsed();                         last = Environment.TickCount;                                            }                     Thread.Sleep(100);                 }             }             catch (Exception e)             { }         }     } }
2.在主线程部分引用此类。在需要执行的event加入:
[u]复制代码[/u] 代码如下:
private const int _Interval =40000;         private MyTimer _Timer;   private void Form1_Load(object sender, EventArgs e)         {             _Timer = new MyTimer();             _Timer.Interval = _Interval;             _Timer.Start(); //开始             _Timer.OnElapsed += Timer_OnElapsed;         }  void Timer_OnElapsed()         {             Invoke(new Action(() => 加入需要执行的event));             //to do         } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { //记得需要结束 if (_Timer != null) { _Timer.OnElapsed -= Timer_OnElapsed; _Timer.Stop(); } }
希望本文所述对大家的C#程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部