8.7K Star 14.3K Fork 4.2K

GVPdotNET China/Furion

 / 详情

ITaskQueue 队列问题

已完成
创建于  
2024-03-21 16:17

版本号

4.9.1.55 (最新)

.NET SDK

.NET8

项目类型

Mvc

操作系统

Windows 10

运行环境

测试环境 (单元测试/集成测试)

数据库类型

SqlServer 2012+

应用托管程序

IIS

这个问题是否已经存在?

如何复现

文档例子代码复现。

预期结果

我想着是,执行队列延迟3秒,第一次能立刻执行,后面在延迟3秒执行。
能否可以增加一个开关来设置延迟队列第一次是否立即执行。

实际结果

实际发生是,延迟3秒后才会执行。

异常信息

截图或视频

没有截图。

Demo 地址(Git/网盘/SVN)

暂无。

友好承诺

  • 我承诺将本着相互尊重、理解和友善的态度进行交流,共同维护好 Furion 来之不易的良好的社区氛围。

评论 (1)

Sunflowers 创建了任务 1年前
展开全部操作日志

已实现:https://gitee.com/dotnetchina/Furion/commit/cf4bd5ac7bab4a25323f1b1ab5b8054810eb7391,下个版本(今天发布)

添加了一个 runOnceIfDelaySet 参数,设置为 true,将立即执行一次。

/// <summary>
/// 同步入队,延迟 3 秒触发,并立即执行一次
/// </summary>
public void SyncTask3()
{
    _taskQueue.Enqueue(provider =>
    {
        Console.WriteLine("我是同步的,但我延迟了 3 秒");
+    }, 3000, runOnceIfDelaySet: true);    // 虽然延迟了,但是会先立即执行一次
}

/// <summary>
/// 异步入队,延迟 3 秒触发,并立即执行一次
/// </summary>
public async Task AsyncTask3()
{
    await _taskQueue.EnqueueAsync(async (_, _) =>
    {
        Console.WriteLine("我是异步的,但我延迟了 3 秒");
        await ValueTask.CompletedTask;
+    }, 3000, runOnceIfDelaySet: true);    // 虽然延迟了,但是会先立即执行一次
}
百小僧 任务状态待办的 修改为已完成 1年前
PonnyZ 修改了描述 1年前
PonnyZ 修改了描述 1年前

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
974299 monksoul 1578937227 Sunflowers-Susan001
C#
1
https://gitee.com/dotnetchina/Furion.git
git@gitee.com:dotnetchina/Furion.git
dotnetchina
Furion
Furion

搜索帮助