RunSynchronously не может быть вызван для задачи, которая уже была запущена
У меня возникла проблема с классом С#, созданным для модульного тестирования моего приложения, в частности проблема связана с объектом System.Threading.Tasks.Task.
У меня есть список таких объектов, и на них я хочу выполнить каждый синхронно.
Я вызываю следующее:
myTask.RunSynchronously();
Когда я делаю это, я всегда получаю следующую ошибку, и я не знаю, почему я могу это исправить.
System.InvalidOperationException: RunSynchronously не может быть вызван в уже запущенную задачу.
У кого-нибудь есть идеи?
Ответы
Ответ 1
Проблема в том, что вы запустили задачу, когда вы вызываете TaskFactory.StartNew
- я имею в виду, даже в имени метода, с которого вы запускаете задачу. StartNew
создает задачу, затем вызывает Start
от вашего имени. = D
Если вы хотите, вы можете либо Wait
в задаче, как сказал @Peter Ritchie, либо вы можете вручную создать задачу следующим образом:
var task = new Task(() => { ... });
task.RunSynchronously();
Ответ 2
Это уже началось, просто используйте myTask.Wait()