Я пытаюсь реализовать длительную обработку операций на сервере без push-уведомлений.Все методы моего проекта - Async.Все методы из веб-проекта ожидают с 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
Есть какие-нибудь предложения, как отследить проблему или выяснить, что может ее вызвать?
С уважением, Борис