2012-03-13 21 views
13

L'utente richiede una pagina sul mio sito web.Avvia un'attività in background da molto tempo

Cosa voglio fare? Invia all'utente una risposta veloce e avvia un'attività in background che richiede molto tempo. Assomiglia:

public ActionResult index() 
{ 
    var task = new Task(Stuff); 

    //start task async 
    task.start(); 

    return View(); 
} 

public void Stuff() 
{ 
    //long time operation  
} 

Come posso farlo?

+4

Come si può fare? Hai già il codice, cosa c'è che non va? – svick

risposta

18

È possibile passare al metodo Task StartNew() un parametro che indica che l'attività che si sta avviando è "long run", che fornisce un suggerimento all'utilità di pianificazione per avviare l'attività su un nuovo thread.

var task = Task.Factory.StartNew(Stuff, TaskCreationOptions.LongRunning); 
4

Ecco un esempio da MSDN http://msdn.microsoft.com/en-us/library/ms978607.aspx#diforwc-ap02_plag_howtomultithread

Mentre è necessario per ASP.NET MVC, è possibile utilizzare l'idea centrale di questo esempio di ASP.NET WebForms.

L'approccio è creare un thread di lavoro per fare il tuo lavoro, avviarlo e inviare una pagina di "attesa" all'utente. Questa pagina di "attesa" si aggiornerà ogni N secondi, cercando i risultati elaborati dal thread di lavoro. Al termine, la pagina "in attesa" mostra i risultati.

Problemi correlati