打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
多线程定时器Demo

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using Feiyunyu.Tool;
using System.Configuration;

namespace ProceRun
{
    public partial class AutoRun : Form
    {
        private System.Threading.Timer stateTimer;
        private System.Threading.Timer endTimer;

        public AutoRun()
        {
            InitializeComponent();
            ProceAutoRun();
        }

        /// <summary>
        /// 多线程开启关闭定时器
        /// </summary>
        public void ProceAutoRun()
        {
            string proceName = ConfigurationSettings.AppSettings["ProceName"];
            string proceRName = ConfigurationSettings.AppSettings["ProceRName"];
            string time =  ConfigurationSettings.AppSettings["RunTime"];
            int waitTime = 1920000; //默认32分钟
            Int32.TryParse(time, out waitTime);
           
            //执行定时器
            stateTimer =new System.Threading.Timer(new TimerCallback(ExecuteProce), proceName, 0, -1);//小于1则只执行一次。
            endTimer = new System.Threading.Timer(new TimerCallback(CloseProce), proceRName, waitTime, -1);
        }

        /// <summary>
        /// 开始执行程序
        /// </summary>
        /// <param name="proceName"></param>
        public void ExecuteProce(object proceName)
        {
            System.Diagnostics.Process.Start(proceName.ToString());
            WriteSendMailLog("开始执行。");
        }

        /// <summary>
        /// 结束线程
        /// </summary>
        /// <param name="proceName"></param>
        public void CloseProce(object proceName)
        {
            try
            {
                System.Diagnostics.Process[] proce = System.Diagnostics.Process.GetProcessesByName(proceName.ToString());
                foreach (System.Diagnostics.Process p in proce)
                {
                    p.Kill();
                }
                WriteSendMailLog("结束执行");
            }
            catch
            {
                stateTimer.Dispose();
                endTimer.Dispose();
                WriteSendMailLog("执行失败");
                return;
            }

            stateTimer.Dispose();
            endTimer.Dispose();
        }

        #region 日志类
        /// <summary>
        /// 日志类
        /// </summary>
        /// <param name="fromUser">发件者</param>
        /// <param name="toUser">收件者</param>
        /// <param name="result">结果</param>
        public void WriteSendMailLog(string context)
        {
            Feiyunyu.Tool.Logger logger = new Feiyunyu.Tool.Logger("Run_Log");
            string time = string.Format("[时间:{0}]", DateTime.Now.ToString());
            logger.AppendLine(time);
            string messge = context;
            logger.AppendLine(messge);
            logger.Save();
        }
        #endregion
    }
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
java手写的定时器.
asp.net错误处理封装
如何在asp.net中如何在线播放视频文件
FTP获取根目录下的所有子文件
高效读取大数据文本文件(上亿行数据)
CookieUtils —— Cookie 工具类
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服