using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; /* * Esercizio 1: Creazione Base e Sincronizzazione con `Join` * Obiettivo: Comprendere come creare, avviare e attendere la terminazione di un thread. * Richieste: * Scrivere un programma che crea due thread * - Il primo thread deve eseguire un metodo che stampa i numeri da 1 a 5, con una pausa di 1 secondo tra ogni numero. * - Il secondo thread deve eseguire un metodo che stampa le lettere dalla 'A' alla 'E', con una pausa di 500 millisecondi tra ogni lettera. * - Il thread principale (`Main`) deve avviare entrambi i thread e poi attendere che entrambi abbiano terminato il loro lavoro prima di stampare un messaggio finale ("Lavoro completato.") e chiudersi. * - Utilizza il metodo `Join()` per garantire che il `Main` aspetti correttamente. */ namespace CompitoThread1 { class Program { static void Main(string[] args) { Console.Clear(); Thread numThread = new Thread(_ => StampaNumeri(1, 5, 1000)); Thread letThread = new Thread(_ => StampaLettere('A', 'E', 500)); numThread.Start(); letThread.Start(); numThread.Join(); letThread.Join(); Console.WriteLine("Lavoro completato"); } static void StampaNumeri(int inizio, int fine, int pausaMs) { for (int i = inizio; i <= fine; i++) { Console.WriteLine(i); Thread.Sleep(pausaMs); } } static void StampaLettere(char inizio, char fine, int pausaMs) { for (char i = inizio; i <= fine; i++) { Console.WriteLine(" "+i); Thread.Sleep(pausaMs); } } } }