3

非常にデータ集約的で、数分かかる可能性のある方法があります。ここにいくつかのコードがあります:

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

このメソッドをバックグラウンド スレッドで実行する最も簡単な方法は何ですか?

4

2 に答える 2

3

App Domainが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を使用する必要がある場合。コードをリファクタリングして、なしでリダイレクトしThreadAbortException、出力をフラッシュしてから、これを続行できます。

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