单线程实现定时执行任务功能

近日,应项目要求,需要定时执行一个更新任务。为了弘扬学习不馁精神,本人使用了两种方式进行实现,分别是:1、利用单线程,本博文重点内容。2、利用Oracle中的数据库连接(dbLink)先将两个数据库进行连接,之后通过存储过程进行实现,这个以后再写吧。今天呢,对单线程的实现方法进行详细说明下。

首先说明下环境,本次使用的是.Net Framework 2.0/Oracle 11g来完成,系统环境为Windows 10;

第二,下面对单线程实现功能的主要代码先贴出来再说;

1、首先为了代码的简洁和美观,以及使用起来方便,我们声明一个委托,并定义一个委托变量;

        //声明委托
        public delegate void UpdateTextDelegate(string msg,string option);
        //定义委托变量
        public UpdateTextDelegate UpdateText;

   2、实例化委托,在窗体初始化时,将该委托进行实例化(委托实例化之后还是委托,和类不一样,类叫实例或者对象^_^);

       //实例化委托
       UpdateText = new UpdateTextDelegate(UpdateTextFunction);

3、由于该工具中只需要执行数据库更新和信息输出功能,所以委托函数如下:

         /// <summary>
        /// 委托函数
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="option"></param>
        private void UpdateTextFunction(string msg, string option)
        {
            if (option == "information")
            {
                this.richTextBox1.AppendText(string.Format("{0}\r", msg));
                //书写到日志
                LogClass.WriteLog(msg);
            }
            else if (option == "end")
            {
                this.richTextBox1.AppendText(string.Format("{0}\r\n\r\n",msg));
                //书写到日志
                LogClass.WriteLog(msg);
            }
            else if(option == "run")
            {
                QueryRefer();
            }
        }

4、正主来了。上面说了,该工具是利用单线程 实现的,所以我们用到了System.Threading命名空间下的Timer和Thread,代码如下:

            //线程中的定时器
            timer = new System.Threading.Timer(new TimerCallback(timer_Tick), null, Convert.ToInt32(this.textBox2.Text) * 1000 * 60 * 60, Convert.ToInt32(this.textBox2.Text) * 1000 * 60 * 60);
            timer.Change(0,Convert.ToInt32(this.textBox2.Text)*1000*60*60);
            //线程声明
            Thread thread = new Thread(new ThreadStart(delegate { StartWriteMsg(); }));
            thread.Name = "myupdateThread";
            //线程启动
            thread.Start();
5、既然线程已经启动,那么就要考虑,在该线程上执行什么任务,该怎样执行;

this.BeginInvoke(UpdateText, "", "run");//在创建控件的基础句柄所在的线程上,用指定的参数异步指定委托

6、接下来呢,就是执行什么任务了,在这里我就不写了,上面的可以使用于任何任务当中。

中午了,吃饭不积极,思想有问题,哈哈,吃饭吃饭

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值