Csharp/C#教程:Winform基于多线程实现每隔1分钟执行一段代码分享

本文实例讲述了Winform基于多线程实现每隔1分钟执行一段代码的方法,分享给大家供大家参考。具体实现方法如下:

1.定义相关的类Timer.cs,代码如下:

代码如下:usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading;

namespaceSMIS2013.DSS.Monitor
{
   publicclassMyTimer
   {
       publicdelegatevoidElapsed();//定义委托 
       publiceventElapsedOnElapsed;

       privatelong_Interval=1000;
       publiclongInterval
       {
           get{return_Interval;}
           set{_Interval=value;}
       }

       privatebool_IsStart=false;
       privateThread_TimerThread;
       publicvoidStart()
       {
           if(_IsStart)
               return;

           _IsStart=true;

           _TimerThread=newThread(newThreadStart(DoTimer));
           _TimerThread.Start();
       }

       publicvoidStop()
       {
           try
           {
               if(!_IsStart)
                   return;

               _IsStart=false;

               _TimerThread.Abort();
           }
           catch(Exceptione)
           {}
       }

       privatevoidDoTimer()
       {
           try
           {
               intlast=Environment.TickCount;
               while(_IsStart)
               {
                   if(Environment.TickCount-last>_Interval)
                   {
                       if(OnElapsed!=null)
                           OnElapsed();

                       last=Environment.TickCount;
                      
                   }
                   Thread.Sleep(100);
               }

           }
           catch(Exceptione)
           {}
       }

   }
}

2.在主线程部分引用此类。在需要执行的event加入:

代码如下:privateconstint_Interval=40000;
       privateMyTimer_Timer;

 privatevoidForm1_Load(objectsender,EventArgse)
       {

           _Timer=newMyTimer();
           _Timer.Interval=_Interval;
           _Timer.Start();//开始
           _Timer.OnElapsed+=Timer_OnElapsed;
       }
 voidTimer_OnElapsed()
       {
           Invoke(newAction(()=>加入需要执行的event));
           //todo
       }

privatevoidForm1_FormClosed(objectsender,FormClosedEventArgse)

{

//记得需要结束

if(_Timer!=null)

{

_Timer.OnElapsed-=Timer_OnElapsed;

_Timer.Stop();

}

}

希望本文所述对大家的C#程序设计有所帮助。

您可能感兴趣的文章:WinForm实现跨进程通信的方法winform基于异步委托实现多线程摇奖器winform开发使用通用多线程基类分享(以队列形式)c#中多线程访问winform控件的若干问题小结c#winform多线程的小例子c#winform关闭窗体时同时结束线程实现思路深入浅析WinForm进程、线程及区别介绍

标签: 线程 fo form 多线程 info orm rm for nf infor

C++实现递归函数的方法

C++设计模式迪米特法则实例

上述就是C#学习教程:Winform基于多线程实现每隔1分钟执行一段代码分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/907250.html

(0)
上一篇 2021年10月24日
下一篇 2021年10月24日

精彩推荐