Когда я комментирую await Task.Delay(1_000);, foo.DoAsync внутри Task.Run — это сам собой. После первого попадания в точку останова2 в режиме отладки точка останова2 больше не попадает.
Код: Выделить всё
internal class Foo
{
public Task DoAsync { get; set; }
public void Recursive()
{
// Breakpoint1
Recursive();
}
}
Код: Выделить всё
var foo = new Foo() { DoAsync = Task.CompletedTask };
//foo.Recursive();
Console.WriteLine($"Outer ThreadId: {Environment.CurrentManagedThreadId}");
var task = Task.Run(async () =>
{
Console.WriteLine($"Inner ThreadId: {Environment.CurrentManagedThreadId}");
// Breakpoint2
await foo.DoAsync;
Console.WriteLine("""
******
******
******
done
******
******
******
""");
});
await Task.Delay(1_000);
foo.DoAsync = task;
await foo.DoAsync;
Подробнее здесь: https://stackoverflow.com/questions/792 ... ntrol-flow
Мобильная версия