WORDS
Task: Run och FromResult
Utför en uppgift
Om man vill exekvera en uppgift i en egen tråd, men inte vill administrera trådpooler eller manuellt hålla koll på om uppgiften har utförts, så kan man använda Task.Run
. Den resulterande Task
som skapas innehåller information om huruvida den har kastat exception, avslutats korrekt eller avbrutits.
Task task = Task.Run(() =>
{
// Gör något långsamt i en annan tråd
});
Ett framtida värde
Task<T>
kan modellera ett framtida värde T
. Genom att returnera från Run
kan man få ett sådant värde:
Task<int> futureResult = Task.Run(() =>
{
// Gör en långsam beräkning i en annan tråd
return 2 + 2;
});
Den resulterande Task<int>
som skapats här, håller information om huruvid värdet har beräknats klart, eller om funktionen har kastat exception eller avbrutits.
Om man behöver en Task<T>
, men redan har värdet beräknat, kan man använda FromResult
:
Task<int> futureResult2 = Task.FromResult(4);