Encerramento gracioso dos WebJobs do Azure

Estou planejando usar um WebJob contínuo do Azure para enviar emails e notificações por push. Entendo que os WebJobs serão iniciados e parados de tempos em tempos por vários motivos. Tudo bem, mas eu gostaria de ter a oportunidade de "limpar" antes do encerramento do trabalho.

Dessa forma, meu WebJob pode atualizar o status dos registros do banco de dados ou excluir itens da fila que já foram processados em cada lote, para que mensagens duplicadas não sejam enviadas na próxima vez que o trabalho for executado.

Como um tiro no escuro, tentei adicionar o seguinte código ao meu aplicativo de console C #:

Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs e) =>
{
  e.Cancel = true;
  program.keepRunning = false;
};

E então usei o bool keepRunning para controlar o loop while principal e coloquei um Console.Writeline ("Expected Graceful") fora do loop while. Mas isso não pareceu ajudar. Quando digo ao trabalho para parar (usando o botão Parar na guia Webjobs do meu Site do Azure), o trabalho desaparece da lista e diz "Não foi possível parar o trabalho: 'JobName'". no portal do Azure (na parte inferior da página). Não vejo o texto "Saído graciosamente" no log do WebJob. Então tirei esse código, pois não estava ajudando.

Portanto, estou procurando uma boa maneira de o meu WebJob ser notificado de que seus segundos estão numerados e que ele precisa colocar seus assuntos em ordem.

questionAnswers(1)

yourAnswerToTheQuestion