【发布时间】:2017-10-02 06:36:21
【问题描述】:
这是简单的每日触发类,我从某个控制器调用此函数 ->("DailyTrigger(int hour, int minute, int second = 0)")。 下一次第一次工作(使用Task.delay)有错误
public class DailyTrigger
{
readonly TimeSpan triggerHour;
public DailyTrigger(int hour, int minute , int second = 0)
{
triggerHour = new TimeSpan(hour, minute, second);
InitiateAsync();
}
async void InitiateAsync()
{
while (true)
{
var triggerTime = DateTime.Today + triggerHour - DateTime.Now;
if (triggerTime < TimeSpan.Zero)
triggerTime = triggerTime.Add(new TimeSpan(0,2,0));
await Task.Delay(triggerTime);
OnTimeTriggered?.Invoke();
}
}
从控制器中调用
var trigger = new DailyTrigger(13,01);
trigger.OnTimeTriggered += () =>
{
var res = AanModel.GetById<Company_Priority>(prio_obj.id);
res.version = "5";
res.Create();
};
那个错误
"异步模块或处理程序在异步完成时完成 操作仍在等待中”
【问题讨论】:
-
你想在这里实现什么?如果您正在执行某种计划任务,那么您不能这样做。
-
如果这是在asp.net 上下文中,您可能需要阅读How to run Background Tasks in ASP.NET
标签: c# asynchronous