2013-10-12 46 views
9

Asp.net mvc kullanıyorum ve sitenin ana sayfasına ulaştığında veritabanı hakkında kullanıcı hakkında bazı verileri önbelleğe almak istiyorum. Kullanıcı Giriş sayfasını istediğinde, veritabanı çağrılarını ve önbellek verilerini yapan bir async yöntemini çağırmak istiyorum.Bir görev beklemeden başlatın

Bunu yapmanın her örneği harika olurdu.

+1

Hiç bir şey denediniz mi? – SpringLearner

cevap

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

veya

Task.StartNew(...) (üzgün kısa cevap için, bu doğru yolda götürebilir veya birisi tam bir örnek göstermek için bu lütfen düzenleyebilir?)

+0

Önbellek tarafında da bana yardımcı olabilir misiniz, Task.StartNew (...) kullanarak verileri önbelleğe almamın 2 saniye sürdüğünü söylüyor. Kullanıcı bu verilere 2 saniyeden önce erişirse, iş parçacığının tüm veriler veritabanından okunup önbelleğe alınana kadar beklemesini nasıl sağlayabilirim? – user2873833

+0

Bu durumda, bir görevi statik bir listeye/sözlüğe kaydedersiniz ve bir görevin mevcut olup olmadığını kontrol ederdiniz. Bu durumda, görev çağırın. Bunun üzerine gidin ve Görev.Result dosyasını alın veya önbellek nesnesine erişin. (btw. HttpUtility.Cache'i kaçırmayın) – 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

Bu, “DoSomeAsyncStuff()” kendi başına çalıştı ve kendi başına çalıştı. [Burada] (http://farazdagi.com/blog/2014/rest-long-running-jobs/) açıklandığı gibi çalışan bir şey elde etmeye çalışıyordum. – OutstandingBill

1

ben Bu aracılığıyla önbelleğe alma yöntemini çağırın söyleyebilirim: Bu şekilde

HostingEnvironment.QueueBackgroundWorkItem(x=> CacheData()); 

, değil mi Ana sayfa isteği beklemeye devam eder, böylece kullanıcılar ana sayfayı hemen görürler, önbellekleme sunucuda arka planda olur.

Not: Ancak, önbelleğe alma iş parçacığınızı sıkıştırmak için uygulama alanı geri dönüşümü riskini hafifçe çalıştırıyorsunuz.