7 modi per creare Task in .NET C#

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.

 

Related Posts