Извините за эссе ...
У меня есть непрерывный WebJob, который использует WebJobs SDK.Он имеет функцию TimerTrigger, которая «проверяет работу».Это задание ставит в очередь задачи для функции QueueTrigger.Сначала я заметил проблему с QueueTrigger.Джобс встал в очередь, а затем почти мгновенно получил статус «Никогда не закончен».Самое смешное, что, по крайней мере, иногда они все еще работали, и если бы я ждал, они в конечном итоге сменились бы с «Никогда не закончено» на «Успех».
Неправильный статус, очевидно, очень вводит в заблуждение и делаетразработка и управление сложны.
Теперь я почти уверен, что решил это для QueueTrigger.Он использовал асинхронный режим, но это не должно было быть проблемой, потому что у меня был Wait () для WhenAll (), и он работал на локальном уровне очень хорошо.Тем не менее, это был не «асинхронный путь полностью», поэтому я подозревал, что, возможно, периодическое бездействие асинхронных потоков вызывает статус «Никогда не завершен».Я обновил код, чтобы он был «полностью асинхронным», вплоть до самой функции QueueTrigger.Кажется, это решило проблему!
Теперь проблема остается для задания TimerTrigger.Если он длится более нескольких сотен мс, он получает статус «Никогда не завершен».Дело в том, что он не использует асинхронный вообще!Под этой функцией даже нет теоретического пути к коду, использующего асинхронный режим.Таким образом, преобразование его в асинхронный полностью является спорным.
Возможно ли, что простое присутствие асинхронного кода где-то еще в проекте вызывает эту проблему для моей функции TimerTrigger, даже если она полностью изолирована от этогокод