如何在网页后台运行慢速数据库任务?

时间:2015-09-24 11:42:54

标签: c# asp.net multithreading elmah

我需要从网页上调用一个非常慢的数据库方法。看来我有很多选择,包括使用BackgroundWorker,Task.Run()和Thread.Start()

哪种情况最适合我的情景?

目前我有:

Task.Run(() =>
{
    using (DAL.StatsDAL data = new DAL.StatsDAL()) 
    {
        data.UpdateStatistics(entryID, entryTtype);
    }
});

我不需要这个(当前)的结果,但我只需要"开火并忘记"。此外,我猜测在此线程上发生的任何潜在错误消息都不会被我的异常处理程序(ELMAH)捕获,因为HttpContext可能已经消失了吗?

编辑:这是ASP.NET WebForms 4.5.1。

编辑2: 我希望任务能够在大约1秒钟内完成(最多),所以我真的只想避免每次用户点击页面之间的1秒延迟

1 个答案:

答案 0 :(得分:0)

你会做很多事,你真的想在.Net 4.5中查看async / await。

https://msdn.microsoft.com/en-us/library/hh191443.aspx