Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite pessoal, desenvolvi um sistema multi thread com C# (windows form) que trabalha 24 x 7 importando dados de arquivos XMLs previamente agendados, o programa roda perfeitamente sem problemas.
Esse sistema está instalado em um serviço cloud com Windows Server 2008 R2, ele roda praticamente 360 dias por ano e quando acontece do cloud "cair" (pelo menos 2 vezes por mês) então é reiniciado o Windows Server.
Guardo o status da thread que está sendo executada em banco de dados, mas quando o servidor é reiniciado essa importação fica "morta" porém em aberto no banco de dados.
Minha dúvida é, tem como gerar uma exception ou detectar essa reinicialização "forçada" do servidor?
Existe um evento o C# que chama SessionEnding, você pode usar o Handler dele para detectar quando a sessão do computador foi finalizada (um desligamento ou reboot), veja estes tutoriais:
http://stackoverflow.com/questions/6799955/how-to-detect-windows-shutdown-or-logoff
http://stackoverflow.com/questions/4617538/is-there-a-way-in-c-sharp-to-detect-a-windows-shutdown-logoff-and-cancel-that-ac
http://stackoverflow.com/questions/8931187/how-to-detect-windows-shutdown-vs-reboot-in-net-c-or-p-invoke