51 messaggi dal 16 gennaio 2009
Buongiorno,
ho implementato delle operazioni in background utilizzando gli hosted services seguendo le indicazioni di Moreno descritte al link seguente:

https://www.aspitalia.com/script/1276/Operazioni-Background-Hosted-Service-ASP.NET-Core.aspx

Ho anche attivato un task ciclico come descritto nello stesso articolo e funziona.
Però non ho capito quando si attiva il task "StopAsync", nel senso che arrestando l'applicazione questo sembra non essere invocato.
Forse non funziona se si arresta l'applicazione in debug da visual studio?
11.886 messaggi dal 09 febbraio 2002
Contributi

Forse non funziona se si arresta l'applicazione in debug da visual studio?


Ho l'impressione che quando interrompi la sessione di debug, il processo dell'applicazione venga killato brutalmente impedendo allo StopAsync di andare in esecuzione. Comunque non sono sicuro di questa cosa e ho aperto una issue per chiedere chiarimenti. Io uso Visual Studio Code ma credo che in quell'occasione il modus operandi sia lo stesso di Visual Studio.
https://github.com/OmniSharp/omnisharp-vscode/issues/2904

Comunque, vedrai che il metodo StopAsync va in esecuzione se avvii l'applicazione da riga di comando con `dotnet run` e poi la termini premendo CTRL+C. Questo causerà un "graceful shutdown" dell'applicazione.

Infatti, se segui l'esempio del MyCourseVedrai, vedrai che verrà stampato correttamente l'output "Arresto il lavoro in background" dopo aver premuto CTRL+C.

ciao,
Moreno
Modificato da BrightSoul il 14 marzo 2019 08:08 -

Enjoy learning and just keep making
11.886 messaggi dal 09 febbraio 2002
Contributi
Confermato nella issue: quando stoppi il debug, il processo viene terminato forzatamente impedendo al metodo StopAsync di andare in esecuzione.

Se vuoi debuggare StopAsync, la soluzione consiste nell'avviare l'applicazione con dotnet run e poi fare l'attach del debugger sul processo dotnet percorsoAssemblyDll. Poi premi CTRL+C per terminare l'applicazione e vedrai che l'esecuzione si fermerà sul breakpoint che hai messo dentro StopAsync.
Modificato da BrightSoul il 14 marzo 2019 21:33 -

Enjoy learning and just keep making
333 messaggi dal 05 novembre 2012
Ciao,

c'è anche una soluzione alternativa con Visual Studio e IISExpress...

Esegui l'applicativo in debug e per fermarti nel metodo StopAsync fermi il sito dalla tray icon di IIS Express

/Ciao

Alessio
11.886 messaggi dal 09 febbraio 2002
Contributi

Esegui l'applicativo in debug e per fermarti nel metodo StopAsync fermi il sito dalla tray icon di IIS Express

Ah sì sì, giusto  Usando Visual Studio effettivamente è più comodo.

Enjoy learning and just keep making
51 messaggi dal 16 gennaio 2009
Esegui l'applicativo in debug e per fermarti nel metodo StopAsync fermi il sito dalla tray icon di IIS Express

Si, così funziona.
Grazie ad entrambi.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.