約1分半後
あなたの問題があります。これはWebアプリケーションですか?1分半は、Webアプリケーションが要求に応答するのに非常に長い時間です。ある種の仕事にするためにさまざまなトリックに従事する価値がないほど長い。
このプロセスをオフロードして、Webアプリケーション自体との非同期性を高める必要があります。Webアプリケーションの性質は、要求を受信し、タイムリーに応答する必要があるということです。ここにあるのは、タイムリーに応答できない長期的なプロセスです。Webアプリケーションはデータとの対話を容易にすることができますが、要求/応答でデータの処理を直接処理するべきではありません。
Webアプリケーションはプロセスとどのように相互作用しますか?それはそれを開始するだけですか、それともプロセスを開始するための情報を提供しますか?プロセス自体は、Windowsサービスやコンソールアプリケーションなどで処理することをお勧めします。Webアプリケーションから切り離されているほど、優れています。今、私はプロセス自体について何も知らないので、私はその振る舞いについていくつかの仮定をしています...
Webアプリケーションは、プロセスに必要な情報とともに、プロセスを開始するための要求を受け取ることができます。これをステータス値(保留中、キューなど)でデータベースに保存し、要求が受信されてプロセスがキューに入れられたことをユーザーに(タイムリーに)応答できます。Webアプリケーションには、ステータスをチェックするページを含めることができるため、ユーザーはプロセスがどのように実行されているか(開始されている場合、通過したレコードの数など)を確認できます。
オフラインアプリケーション(Windowsサービスなど)は、処理される新しくキューに入れられたデータについてそのデータベースを監視するだけです。それを見ると、ステータス(実行中、処理中など)を更新し、そのデータを更新することで、プロセス中に関連するフィードバック(処理されたレコードの数など)を提供します。したがって、オフラインアプリケーションとWebアプリケーションはどちらも同じデータと対話していますが、Webアプリケーションのスレッドをブロックし、ユーザーへの応答を妨げるような方法ではありません。
プロセスが終了すると、ステータスが再度更新されます。Webアプリケーションは、終了したことを示し、結果をダウンロードするためのリンクを提供できます。オフラインプロセスは、完了時にユーザーに電子メールを送信することもできます。あるいは、Webアプリケーションに、ユーザーに新しいアクティビティを警告する何らかの通知システム(Facebookの小さな通知アイコンを描いています)を含めることもできます。
このようにして、スレッドがブロックされることはなく、ユーザーはアプリケーションとの対話を継続できます(対話するものがあれば)など。また、他の追加の利点も得られます。たとえば、プロセスの結果はデータベースに保存され、自動的に履歴が追跡されます。