using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; /* * Esercizio 3: Foreground vs. Background * Obiettivo: Comprendere la differenza fondamentale tra thread in foreground e in back-ground e il loro impatto sulla terminazione dell'applicazione. * Richieste: * Crea due thread, entrambi con un ciclo di lavoro che dura 5 secondi. * - Imposta il primo thread come background. * - Lascia il secondo thread come foreground. * - Il thread principale (`Main`) deve avviare entrambi i thread e poi stampare un mes-saggio ("Il Main ha finito, l'applicazione si chiuder�?") e terminare immediatamente, senza usare `Join()`. * - Esegui il programma e osserva il comportamento. Spiega perch� l'applicazione rimane aperta e cosa viene stampato a schermo. * - Modifica: Commenta la riga che avvia il thread in foreground. Esegui di nuovo il pro-gramma e descrivi la differenza nel comportamento di chiusura dell'applicazione. */ namespace CompitoThread3 { class Program { static void Main(string[] args) { Thread fThread = new Thread(Lavoro); Thread bThread = new Thread(Lavoro); //fThread.IsBackground = false; fThread.IsBackground = true; bThread.IsBackground = true; fThread.Start(); bThread.Start(); Console.WriteLine("Il Main ha finito, l'applicazione si chiuderà?"); } static void Lavoro() { Thread.Sleep(5000); } } }