Orleans 提供了 Timers 和 Reminders两种机制。
Timers
计时器与 .NET 里提供的 System.Threading.Timer 类基本相同。此外,计时器在单独的线程上执行。如果有多个与之关联的计时器,在运行时会进行上下文切换去执行每个计时器。
用法:
要启动计时器,直接使用 RegisterTimer 方法就可以,该方法在 Grain 类中实现,方法参数说明:
Func<object, Task> asyncCallback // 计时器开始计时调用的函数
object state // asyncCallback 函数所需参数
TimeSpan dueTime // 启动到第一次执行间隔的时间量
TimeSpan period // 等行为下一次执行间隔的时间量
方法返回一个 IDisposable 句柄,通过 Dispose 方法来停止计时器。
另外,一旦 Grain 被停用或者 Silo 崩坏,计时器将停止触发。
接下来我们看下使用的代码:
public interface ITimerGrain : IGrainWithIntegerKey
{
Task Start();
Task Finish();
}
public class TimerGrain : Grain, ITimerGrain
{
private readonly ILogger logger;
private IDisposable? disposable;
public TimerGrain(ILogger<HelloGrain> logger)
{
this.logger = logger;
}
public Task Star

本文详细介绍了Orleans框架中的Timers和Reminders功能,对比了两者在执行、持久性、关联性及触发频率上的差异,并根据应用场景给出了选择建议。
最低0.47元/天 解锁文章
974

被折叠的 条评论
为什么被折叠?



