Всем привет!
Заметил, что в некоторых моментах, когда нужно запустить на пуле продолжение выполнения метода, то достаточно удобно использовать Task.Yeld:
using System;
using System.Threading;
using System.Threading.Tasks;
internal class Program
{
private static void Main(string[] args)
{
var test = new Test();
test.Run1().GetAwaiter().GetResult();
Console.WriteLine(new string('-', 30));
test.Run1().GetAwaiter().GetResult();
Console.WriteLine(new string('-', 30));
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
Console.ReadLine();
}
}
public class Test
{
public async Task Run2()
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
await Task.Yield();
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
}
public async Task Run1()
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
await Task.Factory.StartNew(() => Console.WriteLine(Thread.CurrentThread.ManagedThreadId));
}
}
Как считаете, имеет право на жизнь и если да, то почему такой подход не распространен?