前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >在OrderStatusActor构造方法中调用StartTimerAsync

在OrderStatusActor构造方法中调用StartTimerAsync

原创
作者头像
用户7108768
修改2021-09-26 17:46:36
修改2021-09-26 17:46:36
1.9K00
代码可运行
举报
运行总次数:0
代码可运行

在OrderStatusActor构造方法中调用StartTimerAsync

代码语言:javascript
代码运行次数:0
运行
复制
StartTimerAsync("test-timer", "this is a test timer").ConfigureAwait(false).GetAwaiter().GetResult();

通过调用paid接口实例化一个Actor,即可开启timer

 查看控制台,timer触发成功

代码语言:javascript
代码运行次数:0
运行
复制
== APP == info: FrontEnd.ActorDefine.OrderStatusActor[0]
== APP ==       Timer fired: this is a test timer

TimerCallbackAsync方法以二进制形式接收用户状态。 在示例中,回调在将状态写入日志之前将状态 string 解码回 。

可以通过调用 来停止计时器 UnregisterTimerAsync

代码语言:javascript
代码运行次数:0
运行
复制
    public Task StopTimerAsync(string name)
    {
        return UnregisterTimerAsync(name);
    }
Reminder操作

使用Actor基类的 RegisterReminderAsync 方法计划计时器。在OrderStatusActor类中新增方法

代码语言:javascript
代码运行次数:0
运行
复制
        public Task SetReminderAsync(string text)
        {
            return RegisterReminderAsync(
                "test-reminder",
                Encoding.UTF8.GetBytes(text),
                TimeSpan.Zero,
                TimeSpan.FromSeconds(1));
        }

        public Task ReceiveReminderAsync(
            string reminderName, byte[] state,
            TimeSpan dueTime, TimeSpan period)
        {
            if (reminderName == "test-reminder")
            {
                var text = Encoding.UTF8.GetString(state);

                Logger.LogWarning($"reminder fired: {text}");
            }

            return Task.CompletedTask;
        }

RegisterReminderAsync方法类似于 RegisterTimerAsync ,但不必显式指定回调方法。 如上面的示例所示,实现 IRemindable.ReceiveReminderAsync 以处理触发的提醒。

代码语言:javascript
代码运行次数:0
运行
复制
    public class OrderStatusActor : Actor, IOrderStatusActor, IRemindable

ReceiveReminderAsync触发提醒时调用 方法。 它采用 4 个参数:

  1. 提醒的名称。
  2. 注册期间提供的用户状态。
  3. 注册期间提供的调用到期时间。
  4. 注册期间提供的调用周期。

在OrderStatusActor构造方法中调用SetReminderAsync

代码语言:javascript
代码运行次数:0
运行
复制
            SetReminderAsync("this is a test reminder").ConfigureAwait(false).GetAwaiter().GetResult();

通过调用paid接口实例化一个Actor,即可开启reminder

 查看控制台,reminder触发成功

代码语言:javascript
代码运行次数:0
运行
复制
== APP == warn: FrontEnd.ActorDefine.OrderStatusActor[0]
== APP ==       reminder fired: this is a test reminder

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Reminder操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档