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);
        }
    }
}
