コードから iis からの 1 つの asp.net 要求を処理している間に、バックグラウンド タスクを処理するためにスレッド プールから子スレッドを作成したシナリオがあります。子スレッド タスク。しかし、私たちの疑問は、asp.net でリクエストを処理している間、スレッドがそのタスクを終了するまで workerprocess が wiat するのでしょうか?
2 に答える
いいえ、別のスレッドを作成し、それを待機するコードがない場合、リクエストは確実に完了します。
私が知らないのは、ASP.NET 以外のスレッド プール スレッドが実行されている間にワーカー プロセスをリサイクルできるかどうかです。私はそれができると強く思っています - そのため、子タスクはいつでも終了する可能性があることに注意してください。これが問題になる場合は、スレッドプール以外のフォアグラウンド スレッドを作成することをお勧めします。
いいえ、バックグラウンド スレッドはメイン スレッドが終了するのを待たず、すぐに開始します。スレッド プールを使用する場合、タスクはスレッドが使用可能になるまで待機する必要がある場合がありますが、それだけです。
ただし、バックグラウンド スレッドの実行中に asp.net サイトが実行されているアプリケーション ドメインがリサイクルされる可能性があるため、これは適切な解決策ではない可能性があることに注意してください。これにより、バックグラウンド スレッドが強制終了され、タスクが未完了のままになります。可能であれば、バックグラウンド タスクを別のプロセスで実行されるサービス アプリケーションに分離する必要があります。これにより、実行中にタスクが強制終了されなくなります。