我需要编写一段代码:
我发现我可以使用Task
和CancellationToken
,但我看不到任何选项可以在一个时间间隔内反复运行它。
我看到的另一个选项是使用System.Threading.Timer
- 但如果符合条件,我就无法取消该过程。
有人可以提出一个优雅的解决方案吗?
答案 0 :(得分:-1)
您可以使用Quartz。它可以帮助您轻松安排任务,您可以在特定时间,日期,间隔以及您需要的任何时间取消任务。
答案 1 :(得分:-1)
您可以使用Reactive Extensions
轻松完成此操作int maxDurationInseconds = 5;
bool condition = true;
var timer = Observable.Interval(TimeSpan.FromSeconds(1))
.TakeWhile(i => i <= maxDurationInseconds)
.TakeWhile(i => condition)
.Subscribe(i =>
{
Console.WriteLine(i);
});
Console.ReadLine();
timer.Dispose();
上面的代码将显示达到阈值或条件变为false之前经过的秒数。 i
代表传递的秒数。
可以找到Rx的一个很好的参考here。或者看看GitHub repo。