我正在使用 asp.net mvc,我想在用户到达网站主页时从数据库中缓存一些关于用户的数据。因此,当用户请求主页时,我想调用一个异步方法,该方法进行数据库调用并缓存数据。
任何这样做的例子都会很棒。
我正在使用 asp.net mvc,我想在用户到达网站主页时从数据库中缓存一些关于用户的数据。因此,当用户请求主页时,我想调用一个异步方法,该方法进行数据库调用并缓存数据。
任何这样做的例子都会很棒。
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
Task.Run(()=> DoSomeAsyncStuff());
return View();
}
private async void DoSomeAsyncStuff()
{
}
}
对于 .NET Core,我使用它
_ = Task.Run(() => SomeAsyncFunction());
我会说你通过这个调用缓存方法:
HostingEnvironment.QueueBackgroundWorkItem(x=> CacheData());
这样一来,您就不会真正让主页请求等待,因此用户可以立即看到主页,而缓存发生在服务器的后台。
PS:但是,是的,您会冒着应用域回收搞砸缓存线程的风险。
ThreadPool.QueueUserWorkItem((Action<object>)state =>
{
//do your async work
}, null);
或者Task.StartNew(...)
(对不起,简短的回答,这可能会让你走上正确的道路,或者有人可以编辑这个以显示一个完整的例子,好吗?)