C#定时执行一次任务

文章介绍了如何在C#项目中避免使用定时器,通过创建一个静态CollectHelper类实现每天凌晨1点自动删除过期日志文件的定时任务,并在任务完成后重新设置。
摘要由CSDN通过智能技术生成

项目中有个需求缓存垃圾清理,不想用timer一直刷新读取判断是否执行,我想要在每天定时执行一次任务。

自己在网上查了多种方法,选择了其中一个比较简单的,亲测有效,下面是实现代码:

    public class CollectHelper
    {

        static CollectHelper() { }
        private CollectHelper() { }

        static readonly CollectHelper instance = new CollectHelper();
        public static CollectHelper Instance
        {
            get
            {
                return instance;
            }
        }


        /// <summary>
        /// 删除文件
        /// </summary>
        void DeleteExpireFile()
        {
            string Path = "logs\\";
            int HoldDay = 60;//保存60天

            if (!Directory.Exists(Path))
                return;
            TimeSpan KeepDay = new TimeSpan(HoldDay, 0, 0, 0);
            DateTime JudgeDate = DateTime.Now.Subtract(KeepDay);
            DirectoryInfo mydir = new System.IO.DirectoryInfo(Path);
            foreach (FileInfo DelFile in mydir.GetFiles())
            {
                if (DelFile.CreationTime < JudgeDate)
                    File.Delete(DelFile.FullName);
            }
        }


        public void setTaskAtFixedTime()
        {
            DateTime now = DateTime.Now;
            DateTime oneOClock = DateTime.Today.AddHours(1.0); //凌晨1:00
            if (now > oneOClock)
            {
                oneOClock = oneOClock.AddDays(1.0);
            }
            int msUntilFour = (int)((oneOClock - now).TotalMilliseconds);//获取延迟时间量(以毫秒为单位)

            var t = new System.Threading.Timer(doAt1AM);
            t.Change(msUntilFour, Timeout.Infinite);
        }

        //要执行的任务
        void doAt1AM(object state)
        {
            //执行功能...(我这里是删除log的功能)
            DeleteExpireFile();
            //再次设定
            setTaskAtFixedTime();
        }


    }

调用代码:

        private void Form1_Load(object sender, EventArgs e)
        {
            LogHelper.Instance.setTaskAtFixedTime();
        }

  • 21
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
《C》是音樂劇《細小城市》中的主角。他是一個寂寞的人,在人群中感到自己的孤獨。他的名字代表了他自己如同一張白紙,躲在自己的世界裡。C擁有音樂的天賦,他用音樂來表達自己的情感,樂曲是他和世界溝通的方式。他彈奏鋼琴的姿態優雅,音樂充滿情感,每一個音符都流露著他深藏的心情。 然而,C的存在並不被大眾所接受,大家對於音樂似乎並不在乎,他們匆忙地走過,對於C的努力和熱情毫不關心。這讓C感到難過和孤單,他不明白自己為何不能被理解和被接納。他覺得自己彷彿在浩瀚的宇宙中迷失,如同看不到方向的飛船。 然而,C並不因此而沉沒,他更加堅持自己的音樂夢想。他相信自己的音樂能夠打破冷漠的牆壁,觸動人們的心靈。他決定在城市的角落裡彈奏出自己的旋律,無論是否有人聽見,他都會用音樂去陪伴自己。他用音樂填滿自己的內心,找到了自己的寄託。 在無人關注的日子裡,C遇到了一個年輕的女孩,她是出於好奇來到C彈奏的地方。女孩被C的音樂所吸引,感受到了C所表達的情感,她在音樂中找到了一份慰藉和溫暖。C的音樂打破了她平凡生活的無聊,給予了她力量和勇氣去追逐自己的夢想。 這次邂逅改變了C和女孩的生活。C找到了人生的意義,他明白他的音樂並不是為了得到認同和鼓勵,而是要傳達愛和希望。女孩也學到了勇敢追逐夢想的重要性,她相信每個人都有能力將自己的夢想變成現實。 《C》這個角色告訴我們,無論外界對我們的看法如何,我們都應該堅持自己的信念和夢想。透過我們的努力和熱情,我們可以影響到他人,並照亮他們的生活。我們要學會聆聽自己的內心聲音,相信自己的力量,這樣我們才能找到屬於自己的幸福和價值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值