我有一种数据密集型方法,可能需要几分钟。这是一些代码:
Data.Common.Documents.Regenerate();
Response.Redirect("~/Members/ManageDocs.aspx");
在后台线程中执行此方法的最简单方法是什么?
我有一种数据密集型方法,可能需要几分钟。这是一些代码:
Data.Common.Documents.Regenerate();
Response.Redirect("~/Members/ManageDocs.aspx");
在后台线程中执行此方法的最简单方法是什么?
请注意,如果您的应用程序域被 IIS 回收,您将丢失线程及其相关的所有内容。但是,如果您对此感到满意,则可以使用TPL (.NET 4):
Task.Factory.StartNew(() => Data.Common.Documents.Regenerate());
那是假设您不必等待完成,因为在这种特殊情况下,这会破坏后台处理的意义。
如果需要很长时间,请不要在 asp.net 中执行此操作。将处理移至 Windows 服务或计划作业。Asp.net 不是为长时间运行的作业而设计的。
如果你必须使用 asp.net;您可以将代码重构为 Redirect without a ThreadAbortException
,刷新输出,然后继续执行此操作
Response.Redirect("~/Members/ManageDocs.aspx", false);
Response.Flush();
Data.Common.Documents.Regenerate();