2009-09-03 14 views
0

ユーザーがリンクをクリックしてレポートを生成すると、バックグラウンドでpdfファイルを生成するAJAX呼び出しを行います。ファイルは最大10Mb以上の膨大なファイルになっています。ユーザーは何も起こっていないかのように他のリンクをナビゲートすることができるはずです。私は、pdf生成プロセスが開始されるように実装する必要があります。&ユーザーはプロセスが終了するのを待つ必要はありません。私はここでの問題は、すぐにAJAX活動が始まると、ブラウザがハング段階&に入るユーザーは、彼が別のリンクをクリックしたが、待たなければならないことであるドットネットフレームワークを持つC#で2.0AJAXを使用したスレッディング

をAJAX Proを使用しています。

答えて

2

私はおそらく

...「キュー」またはユーザーのための「受信箱」を作成し、あなたのPDF生成ルーチンは、(あなたもに出力するあなたの生成方法を変更する必要がありますThreadPool.QueueUserWorkItemで始まる

受信トレイ)

その後、各HTTPリクエストに応じてその受信トレイを確認し、アイテムの使用者に通知する...あなたはいつもの間隔または気にいら

0

確かに、ユーザーが別のページに移動すると、Ajaxレスポンスを待っているJavascriptは実行されなくなり、リクエストは失われます。そのページを開いたままにする方法(フレームまたはAjaxによるナビゲーションのみを使用する方法)を見つけるか、レスポンスを保存し、次のページビューでその完了をユーザーに通知する方法を見つける必要があります。たとえば、操作が完了したことを示すセッション変数を格納するか、データベースに「未読」のブール値(おそらくは)を格納します。

+0

真の私の問題.Butここwait.Iにハング段階に入ると、ユーザが最終的に持っているがit.Alsoをデタッチするブラウザがありますその応答は私には役に立たない。 – Janmejay

+0

ああ、その場合はワーカースレッドが必要です。以下のObeseCoderの答えをチェックしてください。ASP.NETランタイムは、操作を実行する別のスレッドを生成し、メインスレッドが完了するのを待たずにリターンします。 – JoshJordan

0

にサーバーをポーリングすることができますあなたはあなたができるとは非同期Ajax呼び出しを持つことができます応答オブジェクトがAjaxページから戻ってくる間に他のタスクを実行します。ここ は、いくつかの例であり、testAjax.aspxはここでAjaxのページです:

http_request.onreadystatechange = function() { alertContents(http_request); }; 
http_request.open('GET', 'testAjax.aspx?', true); 
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
http_request.send(null); 

function alertContents(http_request) 
{//debugger; 
    if (http_request.readyState == 4) 
    { 
     if (http_request.status == 200) 
     { 
      var vResult; 
      vResult=http_request.responseText;  
      //Write your logic after successful Ajax call here.     
     } 
     else 
     { 
      alert('There was a problem with the request.'); 
     } 
    } 
} 
関連する問題