1
1
using System . Text ;
2
- using Microsoft . Extensions . Hosting ;
3
2
using Microsoft . Extensions . Logging ;
4
3
using Microsoft . Extensions . Options ;
5
4
using Telegram . Bot ;
6
5
using Telegram . Bot . Types . Enums ;
7
6
using XinjingdailyBot . Infrastructure ;
7
+ using XinjingdailyBot . Infrastructure . Attribute ;
8
8
using XinjingdailyBot . Infrastructure . Enums ;
9
9
using XinjingdailyBot . Interface . Data ;
10
10
@@ -13,7 +13,8 @@ namespace XinjingdailyBot.Tasks
13
13
/// <summary>
14
14
/// 过期稿件处理
15
15
/// </summary>
16
- public class ExpiredPostsTask : IHostedService , IDisposable
16
+ [ Job ( "0 0 0 * * ?" ) ]
17
+ public class ExpiredPostsTask : IJob
17
18
{
18
19
private readonly ILogger < ExpiredPostsTask > _logger ;
19
20
private readonly IPostService _postService ;
@@ -34,33 +35,12 @@ public ExpiredPostsTask(
34
35
PostExpiredTime = TimeSpan . FromDays ( options . Value . Post . PostExpiredTime ) ;
35
36
}
36
37
37
- /// <summary>
38
- /// 定时器周期
39
- /// </summary>
40
- private readonly TimeSpan CheckInterval = TimeSpan . FromDays ( 3 ) ;
41
-
42
38
/// <summary>
43
39
/// 稿件过期时间
44
40
/// </summary>
45
41
private TimeSpan PostExpiredTime { get ; init ; }
46
42
47
- /// <summary>
48
- /// 计时器
49
- /// </summary>
50
- private Timer ? _timer = null ;
51
-
52
- public Task StartAsync ( CancellationToken cancellationToken )
53
- {
54
- var now = DateTime . Now ;
55
- var nextDay = now . AddDays ( 1 ) . AddHours ( - now . Hour ) . AddMinutes ( - now . Minute ) . AddSeconds ( - now . Second ) ;
56
- var tillTomorrow = nextDay - now ;
57
-
58
- _timer = new Timer ( DoWork , null , tillTomorrow , CheckInterval ) ;
59
-
60
- return Task . CompletedTask ;
61
- }
62
-
63
- private async void DoWork ( object ? _ = null )
43
+ public async Task Execute ( IJobExecutionContext context )
64
44
{
65
45
_logger . LogInformation ( "开始定时任务, 清理过期稿件任务" ) ;
66
46
@@ -158,17 +138,5 @@ private async void DoWork(object? _ = null)
158
138
}
159
139
}
160
140
}
161
-
162
- public Task StopAsync ( CancellationToken cancellationToken )
163
- {
164
- _timer ? . Change ( Timeout . Infinite , 0 ) ;
165
- return Task . CompletedTask ;
166
- }
167
-
168
- public void Dispose ( )
169
- {
170
- _timer ? . Dispose ( ) ;
171
- GC . SuppressFinalize ( this ) ;
172
- }
173
141
}
174
142
}
0 commit comments