我有一个在启动时调用的定期工作。它应该每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秒的延迟。我该如何解决?