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");
});
}
}
}