C#定時任務

该代码示例展示了如何使用C#和Quartz.NET库创建一个定时任务,该任务每17分钟执行一次,执行时从数据库获取数据,处理后将结果存储回数据库。任务主要包含了创建定时器、定义任务执行逻辑以及从数据库获取数据的步骤。
摘要由CSDN通过智能技术生成

1.創建定時器

 public static async void SynChronizeStart8()
        {
            IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();
            IJobDetail job = JobBuilder.Create<JobTask>().WithIdentity("JLjob", "JLgroup").Build();
            ITrigger trigger = TriggerBuilder.Create()
                              .WithIdentity("JLjob", "JLgroup")
                              .WithCronSchedule("0 0/1 7 * * ?")
                              .Build();
            await scheduler.ScheduleJob(job, trigger);
            await scheduler.Start();
        }

withIdentity(...)第一個參數為秒,第二個參數為分鐘,第三個參數為小時,第二個的斜杠後面是間隔多久執行一次。

2.創建任務執行代碼

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using FA.Common;
using FA.Entity.EntityFramework;
using Quartz;
using FA.WebApp.Controllers;
using FA.Entity;

namespace FA.WebApp.TaskShedual
{
    public class JobTask : IJob
    {
        //創建數據庫連接
        DataDbcontext _db = new DataDbcontext();
        FAS fas = new FAS();
        public Task Execute(IJobExecutionContext context)
        {
            run();
            return null;
        }
        public void run()
        {
            //建立臨時表
            DataTable dt_station = new DataTable();
            dt_station.Columns.Add("COUNTALL", Type.GetType("System.String"));
            dt_station.Columns.Add("COUNTPOOR", Type.GetType("System.String"));
            dt_station.Columns.Add("DATA_ARR", Type.GetType("System.String"));
           
                    
                    FormController FormController = new FormController();
                    string countAll=FormController.GetAOICountAll(productModel);
                    string countPoor = FormController.GetAOICountPoor(productModel);
                    string dataArr = FormController.GetAOIData(productModel);

                    DataRow dtRow = dt_station.NewRow();
                    dtRow["COUNTALL"] = countAll;
                    dtRow["COUNTPOOR"] = countPoor;
                    dtRow["DATA_ARR"] = dataArr;
                    dt_station.Rows.Add(dtRow);
              
            DateTime dateTime = DateTime.Now;
            for (int i = 0; i < dt_station.Rows.Count; i++)
            {
                FAS_AOI_INFO fai = new FAS_AOI_INFO();
                fai.ID = Guid.NewGuid().ToString();
                fai.COUNTALL = dt_station.Rows[i]["COUNTALL"].ToString();
                fai.COUNTPOOR = dt_station.Rows[i]["COUNTPOOR"].ToString();
                fai.DATA_ARR = dt_station.Rows[i]["DATA_ARR"].ToString();
                fai.CREATE_DATE = dateTime;
                _db.FAS_AOI_INFO.Add(fai);
            }
            //將臨時表的數據存進數據庫
            _db.SaveChanges();
        }

    }

}

3.獲取數據庫數據

public ActionResult GetResult()
        {
            var msg = "";
            bool isSucceed = false;
            string strData = "";
            try
            {
                FormController FormController = new FormController();
                String sql = @"select COUNTALL, COUNTPOOR, DATA_ARR, to_char(CREATE_DATE,'HH24:mi') CREATE_DATE From FAS_AOI_INFO";
                   
                }
                DataTable dt_station = fas.ExcuteSql(sql, "IQCDB").ToDataSet().Tables[0];

                msg = "成功";
                isSucceed = true;
                strData = Newtonsoft.Json.JsonConvert.SerializeObject(dt_station);
            }
            catch (Exception ex)
            {
                msg = "獲取數據異常" + ex;
                isSucceed = false;
            }
            DataResult result = new DataResult
            {
                IsSucceed = isSucceed,
                Result = strData,
                Message = msg,
                StatusCode = 0,
                Total = 0,
            };
            return Json(result);

        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值