2012-05-11 12 views
20

Ho riscontrato un problema con una classe C# che ho creato per il collaudo della mia applicazione, in particolare il problema riguarda un oggetto System.Threading.Tasks.Task.RunSynchronously potrebbe non essere richiamato sull'attività già avviata

Ho una lista di tali oggetti e su di essi voglio eseguirli tutti in sincrono.

io chiamo il seguente:

myTask.RunSynchronously(); 

Quando faccio tale, io sono sempre ottenendo il seguente errore e io non so perché sono come posso risolvere il problema.

System.InvalidOperationException: RunSynchronously potrebbe non essere richiamato sull'attività già avviata.

Qualcuno ha qualche idea?

+1

avete creato il compito con 'TaskFactory.StartNew() '? – Tejs

+0

@Tejs si è corretto – amateur

risposta

28

Il problema è che si iniziato il compito quando si chiama TaskFactory.StartNew - voglio dire, è ancora in nome del metodo che si sta avviando il compito. StartNew crea l'attività, quindi chiama Start per tuo conto. = D

Se si desidera, è possibile Wait sul compito, come @Peter Ritchie ha detto, oppure è possibile creare l'attività manualmente in questo modo:

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

E 'già iniziato, basta usare myTask.Wait()

Problemi correlati