using Furion.DatabaseAccessor; using Furion.DependencyInjection; using Furion.TaskScheduler; namespace Admin.NET.Application { /// /// 定时任务demo /// public class SpareTimeDemo : ISpareTimeWorker { /// /// 3秒后出勤统计 /// /// 参数 /// 次数 [SpareTime(3000, "执行Sql", DoOnce = true, StartNow = true, ExecuteType = SpareTimeExecuteTypes.Serial)] public void ExecSql(SpareTimer timer, long count) { //创建作用域 Scoped.Create((factory, scope) => { var start = DateTime.Now; Console.WriteLine(start.ToString("yyyy-MM-dd HH:mm:ss") + ":任务开始-----------"); var services = scope.ServiceProvider; // 数据库操作 var db = Db.GetSqlRepository(services); if (!string.IsNullOrEmpty(timer.Description)) //假设 后台任务 中把 sql 语句写到了备注里面 db.SqlNonQuery(timer.Description); var end = DateTime.Now; Console.WriteLine(end.ToString("yyyy-MM-dd HH:mm:ss") + ":任务结束-----------"); Console.WriteLine($"SQL执行了:{count} 次,耗时:{(end - start).TotalMilliseconds}ms"); }); } } }