2013-10-12 11 views
9

Ich benutze asp.net mvc und ich möchte einige Daten über Benutzer aus der Datenbank zwischenspeichern, wenn er die Homepage der Website erreicht. Wenn Benutzer die Homepage anfordert, möchte ich daher eine asynchrone Methode aufrufen, die Datenbankaufrufe durchführt und Daten zwischenspeichert.Starten Sie eine Aufgabe ohne zu warten

Alle Beispiele dafür wären großartig.

+1

Haben Sie etwas versucht? – SpringLearner

Antwort

0
ThreadPool.QueueUserWorkItem((Action<object>)state => 
{ 
    //do your async work 
}, null); 

oder Task.StartNew(...)

(sorry für die kurze Antwort, das Sie auf dem richtigen Weg nehmen kann, oder jemand kann dies ein vollständiges Beispiel zeigen, bearbeiten, bitte?)

+0

Kannst du mir auch die Cacheseite helfen, nehmen wir an, es dauert 2 Sekunden, um die Daten mit meiner Task.StartNew (...) zwischenzuspeichern. Wenn der Benutzer vor zwei Sekunden auf diese Daten zugreift, wie würde ich den Thread warten lassen, bis die vollständigen Daten aus der Datenbank gelesen und zwischengespeichert sind. – user2873833

+0

In diesem Fall würden Sie eine Aufgabe in einer statischen Liste/einem Verzeichnis speichern und prüfen, ob eine Aufgabe bereits verfügbar ist. Rufen Sie in diesem Fall task.Wait auf und rufen Sie dann das Task.Result ab oder greifen Sie auf das Cache-Objekt zu. (Btw. HttpUtility.Cache nicht verpassen) – eFloh

15
public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
    ViewData["Message"] = "Welcome to ASP.NET MVC!"; 

    Task.Run(()=> DoSomeAsyncStuff()); 

    return View(); 
    } 

    private async void DoSomeAsyncStuff() 
    { 

    } 
} 
+0

Das funktionierte für mich, wenn 'DoSomeAsyncStuff()' für sich allein hing. Ich habe versucht, etwas zu bekommen, wie beschrieben [hier] (http://farazdagi.com/blog/2014/rest-long-running-jobs/). – OutstandingBill

1

I würde sagen, dass Sie die Caching-Methode über diese aufrufen:

Auf diese Weise nicht Halten Sie die Homepage-Anfrage wirklich bereit, damit die Benutzer die Homepage sofort sehen können, während das Caching im Hintergrund auf dem Server stattfindet.

PS: Aber ja, Sie laufen ein kleines Risiko von App-Domain-Recycling Verschrauben Sie Ihren Cache-Thread.

Verwandte Themen