本文实例讲述了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进程、线程及区别介绍
C++实现递归函数的方法
C++设计模式迪米特法则实例
上述就是C#学习教程:Winform基于多线程实现每隔1分钟执行一段代码分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/907250.html