我尝试在没有推送通知的情况下在服务器上实现长时间运行的操作处理。 我的项目方法都是异步的。 Web项目中的所有方法都使用ConfigureAwait(false)等待 我的网站中引用了管理长时间运行的库。 在我最初的要求下,我为我认为可以持续更长的时间而忘了:
// my fire and forget - the task is not awaited
longRunningOperation.RunAsync();
// add my delay
var result = await Task.WhenAny(longRunningOperation.Task, Task.Delay(LongRunningConfiguration.Instance.InitialRequestReleaseTime)).ConfigureAwait(false);
// if the task finishes the return on time, otherwise create long running handler
if (result == longRunningOperation.Task)
{
// it is OK
}
else
{
Task task = Task.Run(async () =>
{
await longRunningOperation.Task;
});
monitorTask = new ActiveMonitorTask(longRunningOperation, task)
{
Id = Guid.NewGuid()
};
_monitorStateSession.Add(monitorTask);
}
目前,我仅实现了一项支持长时间运行的操作。 该操作的时间鲜为人知。但是他们有时会在WaitForActivation中闲逛
任何建议如何跟踪问题或检查是什么原因引起的?
关于, 鲍里斯