您的位置:首页 > 产品设计 > UI/UE

Quartz.Net系列(七):Trigger之SimpleScheduleBuilder详解

2020-06-20 14:58 621 查看

所有方法图

 

 SimpleScheduleBuilder方法

RepeatForever:指定触发器将无限期重复。

WithRepeatCount:指定重复次数

var trigger = TriggerBuilder.Create().WithSimpleSchedule(s=>s.WithIntervalInSeconds(1).RepeatForever()).Build();

 

var trigger = TriggerBuilder.Create().WithSimpleSchedule(s=>s.WithIntervalInSeconds(1)
.WithRepeatCount(10)).Build();

 

注:底层实现是repeatCount+1,也就是总共执行repeatCount+1次

/// <summary>
/// Specify a the number of time the trigger will repeat - total number of
/// firings will be this number + 1.
/// </summary>
/// <remarks>
/// </remarks>
/// <param name="repeatCount">the number of seconds at which the trigger should repeat.</param>
/// <returns>the updated SimpleScheduleBuilder</returns>
/// <seealso cref="ISimpleTrigger.RepeatCount" />
/// <seealso cref="RepeatForever" />
public SimpleScheduleBuilder WithRepeatCount(int repeatCount)
{
this.repeatCount = repeatCount;
return this;
}

 

 

WithInterval:以毫秒为单位指定重复间隔,由于是TimeSpan也可以指定时分秒

WithIntervalInHours:以小时为单位指定重复间隔

WithIntervalInMinutes:以分钟单位指定重复间隔

WithIntervalInSeconds:以秒为单位指定重复间隔

var trigger = TriggerBuilder.Create().WithSimpleSchedule(s=>s .WithIntervalInSeconds(1)
.WithInterval(TimeSpan.FromDays(1))
.WithIntervalInMinutes(1)
.WithIntervalInHours(1)
.WithRepeatCount(5))
.Build();

注:底层都是通过WithInterval实现的

/// <summary>
/// Specify a repeat interval in milliseconds.
/// </summary>
/// <remarks>
/// </remarks>
/// <param name="timeSpan">the time span at which the trigger should repeat.</param>
/// <returns>the updated SimpleScheduleBuilder</returns>
/// <seealso cref="ISimpleTrigger.RepeatInterval" />
/// <seealso cref="WithRepeatCount(int)" />
public SimpleScheduleBuilder WithInterval(TimeSpan timeSpan)
{
interval = timeSpan;
return this;
}

/// <summary>
/// Specify a repeat interval in seconds.
/// </summary>
/// <remarks>
/// </remarks>
/// <param name="seconds">the time span at which the trigger should repeat.</param>
/// <returns>the updated SimpleScheduleBuilder</returns>
/// <seealso cref="ISimpleTrigger.RepeatInterval" />
/// <seealso cref="WithRepeatCount(int)" />
public SimpleScheduleBuilder WithIntervalInSeconds(int seconds)
{
return WithInterval(TimeSpan.FromSeconds(seconds));
}

静态方法:

RepeatMinutelyForever

RepeatMinutelyForTotalCount

RepeatSecondlyForever

RepeatSecondlyForTotalCount

RepeatHourlyForever

RepeatHourlyForTotalCount

var trigger = TriggerBuilder.Create().WithSchedule(SimpleScheduleBuilder.RepeatSecondlyForTotalCount(2)).Build();

 

/// <summary>
/// Create a SimpleScheduleBuilder set to repeat forever with a 1 minute interval.
/// </summary>
/// <remarks>
/// </remarks>
/// <returns>the new SimpleScheduleBuilder</returns>
public static SimpleScheduleBuilder RepeatMinutelyForever()
{
SimpleScheduleBuilder sb = Create()
.WithInterval(TimeSpan.FromMinutes(1))
.RepeatForever();

return sb;
}

/// <summary>
/// Create a SimpleScheduleBuilder set to repeat forever with an interval
/// of the given number of minutes.
/// </summary>
/// <remarks>
/// </remarks>
/// <returns>the new SimpleScheduleBuilder</returns>
public static SimpleScheduleBuilder RepeatMinutelyForever(int minutes)
{
SimpleScheduleBuilder sb = Create()
.WithInterval(TimeSpan.FromMinutes(minutes))
.RepeatForever();

return sb;
}

/// <summary>
/// Create a SimpleScheduleBuilder set to repeat forever with a 1 second interval.
/// </summary>
/// <remarks>
/// </remarks>
/// <returns>the new SimpleScheduleBuilder</returns>
public static SimpleScheduleBuilder RepeatSecondlyForever()
{
SimpleScheduleBuilder sb = Create()
.WithInterval(TimeSpan.FromSeconds(1))
.RepeatForever();

return sb;
}

/// <summary>
/// Create a SimpleScheduleBuilder set to repeat forever with an interval
/// of the given number of seconds.
/// </summary>
/// <remarks>
/// </remarks>
/// <returns>the new SimpleScheduleBuilder</returns>
public static SimpleScheduleBuilder RepeatSecondlyForever(int seconds)
{
SimpleScheduleBuilder sb = Create()
.WithInterval(TimeSpan.FromSeconds(seconds))
.RepeatForever();

return sb;
}

/// <summary>
/// Create a SimpleScheduleBuilder set to repeat forever with a 1 hour interval.
/// </summary>
/// <remarks>
/// </remarks>
/// <returns>the new SimpleScheduleBuilder</returns>
public static SimpleScheduleBuilder RepeatHourlyForever()
{
SimpleScheduleBuilder sb = Create()
.WithInterval(TimeSpan.FromHours(1))
.RepeatForever();

return sb;
}

/// <summary>
/// Create a SimpleScheduleBuilder set to repeat forever with an interval
/// of the given number of hours.
/// </summary>
/// <remarks>
/// </remarks>
/// <returns>the new SimpleScheduleBuilder</returns>
public static SimpleScheduleBuilder RepeatHourlyForever(int hours)
{
SimpleScheduleBuilder sb = Create()
.WithInterval(TimeSpan.FromHours(hours))
.RepeatForever();

return sb;
}

/// <summary>
/// Create a SimpleScheduleBuilder set to repeat the given number
/// of times - 1  with a 1 minute interval.
/// </summary>
/// <remarks>
/// <para>Note: Total count = 1 (at start time) + repeat count</para>
/// </remarks>
/// <returns>the new SimpleScheduleBuilder</returns>
public static SimpleScheduleBuilder RepeatMinutelyForTotalCount(int count)
{
if (count < 1)
{
throw new ArgumentException("Total count of firings must be at least one! Given count: " + count);
}

SimpleScheduleBuilder sb = Create()
.WithInterval(TimeSpan.FromMinutes(1))
.WithRepeatCount(count - 1);

return sb;
}

/// <summary>
/// Create a SimpleScheduleBuilder set to repeat the given number
/// of times - 1  with an interval of the given number of minutes.
/// </summary>
/// <remarks>
/// <para>Note: Total count = 1 (at start time) + repeat count</para>
/// </remarks>
/// <returns>the new SimpleScheduleBuilder</returns>
public static SimpleScheduleBuilder RepeatMinutelyForTotalCount(int count, int minutes)
{
if (count < 1)
{
throw new ArgumentException("Total count of firings must be at least one! Given count: " + count);
}

SimpleScheduleBuilder sb = Create()
.WithInterval(TimeSpan.FromMinutes(minutes))
.WithRepeatCount(count - 1);

return sb;
}

/// <summary>
/// Create a SimpleScheduleBuilder set to repeat the given number
/// of times - 1  with a 1 second interval.
/// </summary>
/// <remarks>
/// <para>Note: Total count = 1 (at start time) + repeat count</para>
/// </remarks>
/// <returns>the new SimpleScheduleBuilder</returns>
public static SimpleScheduleBuilder RepeatSecondlyForTotalCount(int count)
{
if (count < 1)
{
throw new ArgumentException("Total count of firings must be at least one! Given count: " + count);
}

SimpleScheduleBuilder sb = Create()
.WithInterval(TimeSpan.FromSeconds(1))
.WithRepeatCount(count - 1);

return sb;
}

/// <summary>
/// Create a SimpleScheduleBuilder set to repeat the given number
/// of times - 1  with an interval of the given number of seconds.
/// </summary>
/// <remarks>
/// <para>Note: Total count = 1 (at start time) + repeat count</para>
/// </remarks>
/// <returns>the new SimpleScheduleBuilder</returns>
public static SimpleScheduleBuilder RepeatSecondlyForTotalCount(int count, int seconds)
{
if (count < 1)
{
throw new ArgumentException("Total count of firings must be at least one! Given count: " + count);
}

SimpleScheduleBuilder sb = Create()
.WithInterval(TimeSpan.FromSeconds(seconds))
.WithRepeatCount(count - 1);

return sb;
}

/// <summary>
/// Create a SimpleScheduleBuilder set to repeat the given number
/// of times - 1  with a 1 hour interval.
/// </summary>
/// <remarks>
/// <para>Note: Total count = 1 (at start time) + repeat count</para>
/// </remarks>
/// <returns>the new SimpleScheduleBuilder</returns>
public static SimpleScheduleBuilder RepeatHourlyForTotalCount(int count)
{
if (count < 1)
{
throw new ArgumentException("Total count of firings must be at least one! Given count: " + count);
}

SimpleScheduleBuilder sb = Create()
.WithInterval(TimeSpan.FromHours(1))
.WithRepeatCount(count - 1);

return sb;
}

/// <summary>
/// Create a SimpleScheduleBuilder set to repeat the given number
/// of times - 1  with an interval of the given number of hours.
/// </summary>
/// <remarks>
/// <para>Note: Total count = 1 (at start time) + repeat count</para>
/// </remarks>
/// <returns>the new SimpleScheduleBuilder</returns>
public static SimpleScheduleBuilder RepeatHourlyForTotalCount(int count, int hours)
{
if (count < 1)
{
throw new ArgumentException("Total count of firings must be at least one! Given count: " + count);
}

SimpleScheduleBuilder sb = Create()
.WithInterval(TimeSpan.FromHours(hours))
.WithRepeatCount(count - 1);

return sb;
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐