Ваше понимание верное: в консольных приложениях по умолчанию продолжения будут назначены пулу потоков из-за значения по умолчанию SynchronizationContext
.
Каждый метод async
запускается синхронно, поэтому ваш for
цикл будет запускать начало DoOpAsync
в том же потоке. Предполагая, что SomeOperationAsync
возвращает неполное Task
, продолжения будут запланированы в пуле потоков.
Таким образом, каждая из вызовов DoOpAsync
может продолжаться параллельно.
Это ваша декларация:
DECLARE @test NVARCHAR = 'fun'
После этого @test
имеет значение 'f'
. Зачем? У него только один персонаж.
Всегда вставляйте длину при использовании строковых объявлений в SQL Server:
DECLARE @test NVARCHAR(255) = 'fun'