专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-963-0016      微信咨询  |  联系我们

C# 定时任务之windows任务计划程序

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 1:08:40       共计:3658 浏览

我们有时候需要在特定的时间、或者间隔某段时间后执行一个程序来处理问题;如果间隔时间较长,比如一天一次、一周一次,或者需要在某年某月某日某时执行,那么我们用计时器去实现的话,就很不合理了,资源消耗不说,而且还可能发生程序卡死、时间不精确等情况。




       


       这一篇我们介绍下面这个方式:不写一行代码,利用Windows自带的任务计划程序来实现定时任务的执行


按下windows+r,输入taskschd.msc回车执行,进入windows任务计划程序

右键任务计划程序库,可以选择创建任务/创建基本任务,创建任务的话可操作性比较多,这里我们一般采用基本任务就足够了

填写任务的名称、描述等信息,下一步进入触发器页面,选择执行的时间(段),同样也提供了事件触发(这里如果不是创建的基本任务,可选择性会更多)



选择完时间后下一步进入选择要触发的事件,这里我们选择启动程序,然后选择我们的程序即可,当然也可以执行批处理或者其他的程序



最后点击完成即可。

既然我们是写C#的,我们就写一个简单的C#程序。这里建议用控制台来做,有以下两个原因:


方便设置参数,即上图设置定时任务的同时的添加参数

一般这样的定时任务都希望无感执行,控制台更方便胜任

写一个简单的demo如下


using System;
using System.IO;

namespace DeleteFileTime
{
    class Program
    {
        [STAThread]//加这个执行不弹出黑框,同时需要将项目的输出类型改为Windows应用程序,来实现无感执行
        static void Main(string[] args)
        {
            //Console.WriteLine("Hello World!");
            DelLogs();
            //Console.ReadKey();
        }
        /// <summary>
        /// 删除指定目录下文件
        /// </summary>
        public static void DelLogs()
        {
            string path = @"E:\db_backup\"; //AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "Files\\Logs\\";
            DirectoryInfo directoryInfo = new DirectoryInfo(path);
            if (Directory.Exists(path))
            {
                FileInfo[] fileInfos = directoryInfo.GetFiles();
                DateTime date = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd") + " 23:59");
                foreach (FileInfo file in fileInfos)
                {
                    if (date.CompareTo(file.LastWriteTime) >0 && System.Text.RegularExpressions.Regex.IsMatch(file.Name, ".trn"))
                    {
                        File.Delete(path + file.Name);
                        //Console.WriteLine($"成功删除:{path + file.Name} 执行时间:{DateTime.Now}");
                    }
                }
            }
        }
 
    }


}



版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:C#使用Quartz 实现定时任务 | ·下一条:nginx从http跳转到https三种方法可以实现

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有