0

私は VS2010 と ASP.NET 4 を使用しています。アプリケーションで実行されている、実行時間の長いバックグラウンド スレッドが 1 つあります。これは、フォルダー内の最近使用されていないファイルを「クリーンアップ」するように設計されています。EventWaitHandle を使用して不要な CPU 使用率を排除しますが、アプリの存続期間中は実行を続けます。

24 ~ 40 回ほど削除すると、アプリケーションが再起動します。これは、デバッガーが接続されている IIS Express と WebDev サーバーの両方で発生します。バックグラウンド スレッドで例外はスローされませんが、すべてのスレッドで ThreadAbortException が発生し、アプリが再起動します。リダイレクト呼び出しはどこにも行われません。

これらのファイルは、アプリの再起動を引き起こすフォルダーではなく、ルートの「imagecache」フォルダーにあります。フォルダは作成または削除されません。

再起動は、削除の特定のしきい値が発生した後、一定の間隔で発生するようです。

なぜこれが起こっているのか、どうすればそれを止めることができるのでしょうか? 10秒ごとに再起動するのは私には受け入れられません:)

4

2 に答える 2

0

おそらくそれはIISアプリケーションプールのリサイクルですか?リサイクル設定を見て、そこに何かがあるかどうかを確認してください。

別のオプションは、バックグラウンドスレッドを開始する方法によって異なります。aspxページからのものである場合は、リクエストスレッドがタイムアウトしている可能性があります。それがglobal.asaxからのものである場合、これはオプションではありません。

于 2011-05-29T23:44:36.650 に答える
0

asp.net アプリケーションは、バックグラウンド タスクを実行するためではなく、クライアント リクエストにサービスを提供するためのものです (ただし、これを可能にする多くの工夫があります)。

スレッドをサービスに入れることはできますか?

于 2011-05-30T00:35:10.380 に答える