2010-12-13 8 views
0

スレッドは各Application_Startイベントで開始されます。asp.netはアプリケーション作成のスレッドをシャットダウンできますか?

常に実行されるはずの監視スレッドになります。

アプリがシャットダウンしても、スレッドが再起動されると、スレッドは常に起動して、常に実行されます。

しかし、を実行しているアプリケーションがの間、このスレッドが停止/シャットダウンされないようにする必要があります。

したがって、実際にアプリケーションを停止/リサイクルすることなく、asp.netがそのようなスレッドをシャットダウンできるかどうかは、何人かの人が知っていますか?

答えて

4

設計の問題として、このようなスレッドを実行するasp.netに依存しないでください。アプリのリサイクルのような小さなものは、あなたに多くの問題を引き起こす可能性があります。

代わりに、スレッドを実行するWindowsサービスを作成します。あなたはそれを心配する必要はありませんこのように。

更新
ちょっとした情報を追加したかっただけです。

IISには、複数のスレッドとプロセスにわたってアプリケーションを実行する機能があります。標準的なサイトのインストールでは、通常、要求処理を処理するために約20個のスレッドをスピンアップする単一のプロセス(別名:Webガーデン)のみが割り当てられます。

しかし、どのIIS管理者も、簡単に多くのプロセスをミックスに追加できます。リクエスト処理に時間がかかりすぎたり、ハンドラスレッドの数が不足したり、アプリケーションが1つのスレッドが全体をホースするのに十分な問題がある場合は一時的な手段として、サイトが1つのプロセスをホースすることができますプロセスはかなり頻繁に行われます。

スレッドをアプリ起動時にスピンしている場合は、サイトにあるワーカープロセスごとにスレッドを作成します。これはあなたやあなたの後継者に予期せぬ挙動かもしれません。

また、監視アプリケーションは、ほとんどの場合、監視しているアプリケーションとは完全に別です。主な理由の1つは、監視対象のプロセスが停止したり、ハングしたり、応答しなくなったりした場合、監視アプリケーション自体が引き続きこの情報を記録してログに記録する必要があるということです。さもなければ、監視されたプロセスは監視アプリケーションそのものをうまく泳動させることができる。

だから、あなた自身の好意を持ち、これを独自のプロセスに移してください。 IISサーバーでこれを行う最善の方法は、Windowsサービスを作成し、必要な処理を実行するための適切な実行権限を与えることです。

関連する問題