2011-07-21 8 views
1

アップロードしたテキストファイルを複数のPDFに作成するページを作成しています。 Excelからのエクスポートだけです。ファイルの各行は、作成する必要がある新しいPDFに対応しています。ASP.Net Webアプリケーションに進捗情報を保存する場所

とにかく、ファイルがアップロードされると、私はそれらのファイルを処理したいと思いますが、ユーザーがそのページにいなくても、セッションを開いていなくてもかまいません。たとえば、ブラウザを閉じて10分後にログインしてログインすると、進行状況情報には112,200件の処理済みファイルなどが表示されます。それはそれよりもはるかに速くなります。

実際には、この処理ジョブをページが閉じられたときに実行し続ける何か(Handler?Thread?)にどのように渡すことができ、ジョブが開始されるとすぐに戻りますやめた?)次に、ユーザーがページに戻ったときに現在の進捗状況を確認できるように、この情報をどこに保存できますか。

私はセッションを使用できないことを認識しています.2秒間ファイルを処理するので、は実際には毎秒DBを更新します。私はこれを行うことができる方法はありますか?出来ますか?

+0

http://blog.bluesam.com/2008/06/running-batch-jobs-in-aspnet-web.htmlのようなものを見てください。これは正しい方向に進むかもしれません。 –

+0

これは、私が探しているもののように見える、私は家に帰るときに見てみる –

答えて

-1

私はこれを上のスタンダードが提供するリンクを使用して解決しました。私は単純にHttpContext.Applicationにオブジェクトを作成して進捗変数を保存し、新しいスレッドの中で自分の処理を行うメソッドを設定します。

// Create the new progress object 
BatchProgress bs = new BatchProgress(0); 
if(Application["BatchProgress"] != null) 
{ 
    // Should never happen 
    Application["BatchProgress"] = bs; 
} 
else 
{ 
    Application.Add("BatchProgress","bs"); 
} 

//Set up new thread, run batch is the method that does all the processing. 
ThreadStart ts = new ThreadStart(RunBatch); 
Thread t = new Thread(ts); 
t.Start(); 

これは、スレッドが開始された後、戻って、私は定期的にアプリケーション[「BatchProgress」]オブジェクトを取得するためにjQueryを使用することができます。私のスレッドの最後で、BatchProgressオブジェクトの状態は "Complete"に設定されています.jQueryがそれを照会すると、完全なステータスが表示され、アプリケーションから進行状況オブジェクトが削除されます。

+1

これはテストで動作するように思われるかもしれませんが、あなたはここで2つの大きな問題があります。 1つは、誰もあなたのサイトをしばらく訪問しないと、処理バッチが強制終了される可能性があるということです。もう1つは、サイトのすべてのユーザーがHttpContext.Application()アイテムを_shared_しているため、1人のユーザーが別のユーザーのバッチ参照を上書きして進行状況の情報を表示する可能性があります。代わりに、Windowsサービスを構築してそれに話をする必要があります。 –

+0

ああ、私はバッチが殺されることを知らなかった、それは少し心配です。ただし、バッチ参照では上書きは許可されません。ページを使用するために必要な機能はアプリケーション["BatchProgress"]がnullの場合にのみ使用できます。それ以外の場合はサーバーコントロールがページから削除され、代わりにBatchProgressが表示されます。管理サイトでこれを使っているのは1人だけなので、一度に1つのバッチが必要です。バッチは毎週実行されます。私の処理バッチが殺されるまでの時間は? –

+0

これは、IISの設定とサイトのトラフィック量によって異なります。私はデフォルトが20分のアイドル時間のようなものだと思うが、私の記憶は正確な時間制限ではあいまいである。その後、サイトをホストしているアプリケーションプールがシャットダウンされます。だから公共のインターネットにも人気のサイトがあるなら、あなたは大丈夫です。これがそれ自身のアプリケーションプールで、1人だけが週に一度それを訪れる人なら、あなたは問題を抱えている可能性があります。 –

関連する問題