环境:quazrtz.net实现,asp.net core mvc
一个计划分内外两层,类似大循环套小循环。当前一个内外两层循环执行完成后,依次进入下一个内外两层循环(内外两层非无限)。
1.外层:等待N分钟,开灯N分钟后关闭。再等待N分钟,进入下一步。
2.下一步:如果有内层,则:等待N分钟,开灯N分钟后关闭(等待时间与上一步的等待时间累加)。
以上有执行次数;如果没有内层,等待N分钟后,进入下一个同样的内外两层循环。
问题.以下是内循环。因为有多个相似的内外循环要依次执行,都用了Thread.Sleep,不知会阻塞整个计划吗?正确用法是怎样呢?
public class LightJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
// 模拟开灯操作
Console.WriteLine("Light is turned on.");
// 模拟等待一段时间(例如使用Thread.Sleep)
Thread.Sleep(TimeSpan.FromMinutes(context.JobDetail.JobDataMap.GetIntValue("openTime"))); // 获取配置的开灯时间参数
// 模拟关灯操作
Console.WriteLine("Light is turned off.");
return Task.CompletedTask; // 表示任务完成
}
}