Sto implementando un metodo Task<Result> StartSomeTask()
e mi capita di conoscere il risultato già prima che venga chiamato il metodo. Come posso creare un'attività <T> che è già stata completata?
Questo è quello che sto facendo attualmente:
private readonly Result theResult = new Result();
public override Task<Result> StartSomeTask()
{
var task = new Task<Result>(() => theResult);
task.RunSynchronously(CurrentThreadTaskScheduler.CurrentThread);
return task;
}
C'è una soluzione migliore?
ValueTask
per attività completate (cioè per valori che hai già in modo che il codice sia essenzialmente sincrono), il che ti farà risparmiare un'allocazione.