Подтвердить что ты не робот

RunSynchronously не может быть вызван для задачи, которая уже была запущена

У меня возникла проблема с классом С#, созданным для модульного тестирования моего приложения, в частности проблема связана с объектом System.Threading.Tasks.Task.

У меня есть список таких объектов, и на них я хочу выполнить каждый синхронно.

Я вызываю следующее:

myTask.RunSynchronously();

Когда я делаю это, я всегда получаю следующую ошибку, и я не знаю, почему я могу это исправить.

System.InvalidOperationException: RunSynchronously не может быть вызван в уже запущенную задачу.

У кого-нибудь есть идеи?

4b9b3361

Ответ 1

Проблема в том, что вы запустили задачу, когда вы вызываете TaskFactory.StartNew - я имею в виду, даже в имени метода, с которого вы запускаете задачу. StartNew создает задачу, затем вызывает Start от вашего имени. = D

Если вы хотите, вы можете либо Wait в задаче, как сказал @Peter Ritchie, либо вы можете вручную создать задачу следующим образом:

var task = new Task(() => { ... });
task.RunSynchronously();

Ответ 2

Это уже началось, просто используйте myTask.Wait()