Здравствуйте, #John, Вы писали:
J>Здравствуйте, gabryael, Вы писали:
G>>G>>tasks.Add(await Task.Factory.StartNew(add));
G>>
J>Такой вариант не подходит, т.к. новые таски будут создаваться и завершаться последовательно.
Это не так.
G>>или
G>>G>>tasks.Add(Task.Factory.StartNew(add).Unwrap());
G>>
J>Так не работает.
Работает.
G>>или просто
G>>G>>tasks.Add(Task.Run(add));
G>>
J>Так работает. Почему в случаи `tasks.Add(Task.Factory.StartNew())` SemaphoreSlim(1,1) WaitAsync не работает как lock?
SemaphoreSlim работает как должен. Просто ты ожидаешь не те таски. Task.Factory.StartNew(...) возвращает Task<Task> для асинхронных делегатов, поэтому нужен еще один await или Unwrap().
Подробнее