周期性工作未在设定的时间被调用

问题描述 投票:0回答:1

我有一个在启动时调用的定期工作。它应该每20秒调用一次PlaceOrder()。

工作看起来像这样

 RecurringJob.AddOrUpdate<MethodCaller>(a => a.PlaceOrder(), "*/20 * * * * *"); 

PlaceOrder()方法在延迟5秒后调用RevokeOrder()。

方法

    public void PlaceOrder()
    {
        DateTimeOffset d = DateTimeOffset.Now;

        Debug.WriteLine("PLACED : {0}", d);
        Task.Delay(5000).ContinueWith(t => RevokeOrder());
    }

    public void RevokeOrder()
    {
        DateTimeOffset d = DateTimeOffset.Now;

        Debug.WriteLine("REVOKED : {0}",d);
    }

问题是这两种方法每15秒或有时每30秒而不是20调用一次。

日志:

PLACED : 1:59:27 
 REVOKED : 1:59:32 
PLACED : 1:59:42 
 REVOKED : 1:59:47 
PLACED : 2:00:12 
 REVOKED : 2:00:17 
PLACED : 2:00:27 
 REVOKED : 2:00:32 
PLACED : 2:00:43 
 REVOKED : 2:00:48 

我希望每20秒调用一次PlaceOrder()和RevokeOrder()方法。但是它们之间应该有5秒的延迟。我该如何解决?

c# hangfire
1个回答
0
投票
请参阅下面的可解决此问题的有效控制台应用程序。使用计时器而不是recurringJob。
© www.soinside.com 2019 - 2024. All rights reserved.