Winform基于多線程實(shí)現(xiàn)每隔1分鐘執(zhí)行一段代碼
本文實(shí)例講述了Winform基于多線程實(shí)現(xiàn)每隔1分鐘執(zhí)行一段代碼的方法,分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
1.定義相關(guān)的類Timer.cs,代碼如下:
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.在主線程部分引用此類。在需要執(zhí)行的event加入:
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(() => 加入需要執(zhí)行的event));
//to do
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
//記得需要結(jié)束
if (_Timer != null)
{
_Timer.OnElapsed -= Timer_OnElapsed;
_Timer.Stop();
}
}
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C#使用GDI+實(shí)現(xiàn)生成驗(yàn)證碼
這篇文章介紹了C#使用GDI+實(shí)現(xiàn)生成驗(yàn)證碼的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
spreadsheetgear插件屏蔽鼠標(biāo)右鍵的方法
今天用到spreadsheetGear插件,然后右鍵有插件自己的菜單。都是英文的,而且還能打開新的窗體。嵌到程序里面,不太合適,所以著手屏蔽2014-02-02
C# 當(dāng)前系統(tǒng)時(shí)間獲取及時(shí)間格式詳解
這篇文章主要介紹了C# 當(dāng)前系統(tǒng)時(shí)間獲取及時(shí)間格式詳解的相關(guān)資料,這里提供代碼實(shí)例,幫助大家學(xué)習(xí)參考,需要的朋友可以參考下2016-12-12
C# 創(chuàng)建Excel氣泡圖的實(shí)例代碼
這篇文章主要介紹了C# 創(chuàng)建Excel氣泡圖的實(shí)例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
解析C#彩色圖像灰度化算法的實(shí)現(xiàn)代碼詳解
本篇文章是對(duì)C#中彩色圖像灰度化算法的實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C#使用Oracle.ManagedDataAccess.dll組件連接Oracle數(shù)據(jù)庫
這篇文章介紹了C#使用Oracle.ManagedDataAccess.dll組件連接Oracle數(shù)據(jù)庫的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05

