Capire thread e task
Esplori thread e task per gestire l’elaborazione parallela in C#
Capire thread e task è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 3 di 5. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 5 lezioni in totale.
Introduzione a thread e task
Comprendere thread e task
Benvenuto alla lezione successiva! In questa lezione imparerà a conoscere thread e task in C#, che consentono di eseguire più operazioni contemporaneamente per ottenere prestazioni migliori. Iniziamo!

Che cos'è il threading?
Il threading è il processo di esecuzione simultanea di più operazioni. Ogni thread rappresenta un flusso di controllo separato nell'applicazione.
Punto chiave: il threading migliora le prestazioni sfruttando più core del processore per l'esecuzione concorrente.
Creare e avviare thread
È possibile creare e avviare thread utilizzando la classe Thread. Esempio:
using System;
using System.Threading;
class Program {
static void Main() {
Thread thread = new Thread(PrintNumbers);
thread.Start();
Console.WriteLine("Main thread is running...");
}
static void PrintNumbers() {
for (int i = 1; i <= 5; i++) {
Console.WriteLine(i);
Thread.Sleep(1000); // Pause for 1 second
}
}
}
Introduzione ai task
I task offrono un'astrazione di livello superiore per la programmazione concorrente rispetto ai thread. La classe Task fa parte della Task Parallel Library (TPL) in C#.
Esempio: creazione e avvio di un task:
Suggerimento: i task sono più facili da gestire e offrono una gestione degli errori migliore rispetto ai thread.
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
Task task = Task.Run(() => {
for (int i = 1; i <= 5; i++) {
Console.WriteLine(i);
Task.Delay(1000).Wait();
}
});
Console.WriteLine("Main thread is running...");
task.Wait(); // Wait for the task to complete
}
}
Utilizzare Parallel.For e Parallel.ForEach
La classe Parallel in C# consente di eseguire i cicli in parallelo per ottenere prestazioni migliori. Esempio:
Punto chiave: utilizzi Parallel.For e Parallel.ForEach per attività che richiedono un uso intensivo dei dati e possono essere eseguite contemporaneamente.
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
Parallel.For(0, 5, i => {
Console.WriteLine($"Processing {i} on thread {Task.CurrentId}");
});
Console.WriteLine("All tasks completed.");
}
}
Gestire le eccezioni nei task
È possibile intercettare le eccezioni nei task utilizzando un blocco try-catch o la proprietà Task.Exception. Esempio:
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
try {
Task task = Task.Run(() => {
throw new InvalidOperationException("Task failed!");
});
task.Wait();
} catch (AggregateException ex) {
Console.WriteLine("Error: " + ex.InnerException.Message);
}
}
}
Sfida pratica
Crei un programma che avvii più task per elaborare i numeri in parallelo e ne stampi i quadrati. Esempio:
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
int[] numbers = { 1, 2, 3, 4, 5 };
Parallel.ForEach(numbers, number => {
Console.WriteLine($"Square of {number}: {number * number}");
});
}
}
Buone pratiche per thread e task
Ecco alcune buone pratiche:
- Preferisca
TaskaThreadper la concorrenza di alto livello. - Utilizzi le classi
Parallelper le operazioni che richiedono un uso intensivo dei dati. - Gestisca correttamente le eccezioni per garantire applicazioni robuste.
- Limiti il numero di thread o task per evitare contese sulle risorse.
Suggerimento: utilizzi la programmazione asincrona quando predominano le operazioni di I/O e thread o task per le attività legate alla CPU.
Ottimo lavoro!
Congratulazioni! Ha appreso le basi di thread e task per la programmazione concorrente in C#. Nella prossima lezione approfondiremo i delegati e le espressioni lambda, due potenti funzionalità per la programmazione funzionale. Continuiamo a programmare!

Impara C# con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 93
- Lezioni
- 346
Domande Frequenti
La lezione «Capire thread e task» è gratuita?
Sì — il testo completo di «Capire thread e task» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 5 lezioni in totale.
Cosa imparerò in «Capire thread e task»?
Esplori thread e task per gestire l’elaborazione parallela in C# Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C# Academy?
Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 5.
Quanto tempo richiede la lezione «Capire thread e task»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C# Academy?
Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Generics in C#
- Async e await: lavorare con codice asincrono
- Capire thread e task
- Esplorare delegati e lambda
- Capire la reflection in C#