2012-05-11 17 views
20

Tengo un problema con una clase C# que creé para probar mi aplicación unitaria, en particular, el problema está alrededor de un objeto System.Threading.Tasks.Task.No se puede ejecutar RunSynchronously en la tarea que ya se inició

Tengo una lista de dichos objetos y en ellos quiero ejecutarlos de forma síncrona.

que llamar a los siguientes:

myTask.RunSynchronously(); 

Cuando hago tal, siempre estoy recibiendo el siguiente error y no sé por qué somos cómo puedo solucionarlo.

System.InvalidOperationException: Es posible que RunSynchronously no se invoque en la tarea que ya se inició.

¿Alguien tiene alguna idea?

+1

¿Ha creado la tarea con 'TaskFactory.StartNew() '? – Tejs

+0

@Tejs sí, eso es correcto – amateur

Respuesta

28

El problema es que empezar la tarea cuando se llama TaskFactory.StartNew - quiero decir, es incluso en el nombre del método que se va a iniciar la tarea. StartNew crea la tarea, luego llama al Start en su nombre. = D

Si desea, puede Wait en la tarea, al igual que @Peter Ritchie dijo, o puede crear la tarea manualmente de este modo:

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

Ya ha empezado, sólo tiene que utilizar myTask.Wait()

Cuestiones relacionadas