3

我有一种数据密集型方法,可能需要几分钟。这是一些代码:

Data.Common.Documents.Regenerate();
Response.Redirect("~/Members/ManageDocs.aspx");

在后台线程中执行此方法的最简单方法是什么?

4

2 回答 2

3

请注意,如果您的应用程序域被 IIS 回收,您将丢失线程及其相关的所有内容。但是,如果您对此感到满意,则可以使用TPL (.NET 4)

Task.Factory.StartNew(() => Data.Common.Documents.Regenerate());

那是假设您不必等待完成,因为在这种特殊情况下,这会破坏后台处理的意义。

于 2012-06-11T10:33:33.627 回答
1

如果需要很长时间,请不要在 asp.net 中执行此操作。将处理移至 Windows 服务或计划作业。Asp.net 不是为长时间运行的作业而设计的。

如果你必须使用 asp.net;您可以将代码重构为 Redirect without a ThreadAbortException,刷新输出,然后继续执行此操作

Response.Redirect("~/Members/ManageDocs.aspx", false);
Response.Flush();
Data.Common.Documents.Regenerate();
于 2012-06-11T10:36:05.863 回答