Se stiamo programmando in C# (.NET) e siamo nella situazione di dover creare ed eseguire un Task in un nuovo thread, possiamo procedere in molti modi diversi.
Per prima cosa aggiungiamo la seguente direttiva di using:
using System.Threading.Tasks;
Usiamo uno dei seguenti metodi:
1. Metodo classico
Task.Factory.StartNew(() => { Console.WriteLine(“Hello Task :D”); });
2. Usando Delegate
Task task = new Task(delegate { MyVariousCommands(); });
task.Start();
3. Usando Action
Task task = new Task(new Action(MyMethod));
task.Start();
dove MyMethod è in metodo vero e proprio:
private void MyMethod()
{
Console.WriteLine(“Hello Task :D”);
}
4. Usando Lambda senza metodo
Task task = new Task( () => { MyVariousCommands(); } );
task.Start();
5. Usando Lambda con metodo
Task task = new Task( () => MyMethod() );
task.Start();
6. Usando Run (.NET 4.5)
public async Task DoStuff()
{
await Task.Run(() => MyMethod());
}
7. Usando FromResult (.NET 4.5)
public async Task DoStuff()
{
int result = await Task.FromResult<int>(SumMe(1, 2));
}
private int SumMe(int a, int b)
{
return a + b;
}
Ricordate che non è possibile avviare un Task che è già stato eseguito.
In questo caso (se dobbiamo rieseguire uno stesso Task) dovremo re-inizializzare il Task prima di poterlo ri-eseguire.