2011-09-15 11 views
1

私はこのようなPage_Loadの機能の中に書かれているDefault.aspx.csファイル内のコードのいくつかの作品があります。私が欲しいもの5秒間の遅延で関数を繰り返し呼び出す方法はありますか? (C#のとASP.NET)

protected void Page_Load(object sender, EventArgs e) 
{ 
    //code stars here 
    ... 
    //code ends here 
} 

は、コードのこの部分が実行されるということです継続的に5秒間の遅延を伴う。どうすればいい? ありがとうございます。

+0

あなたのASP。NET要求が処理された場合、それに関連するすべてのオブジェクトが破棄されます。あなたのページオブジェクトはもはや生き残っておらず、X秒ごとに連続してタスクを実行することはできません。あなたの要求の処理を遅くするものをコード化するのは意味がありません。できるだけ早く実行する必要があります。 –

+0

実際に私はチャットシステムに取り組んでいますので、着信メッセージを5秒ごとに確認する必要があり、このようにする必要があります。私にそれをする方法を提案してください(どんなタイミング機能のようにでも...) 私はあなたの助けに感謝します。 – Azeem

+0

1回のリクエストでこのコードをサーバー上で5秒ごとに実行する必要はありません。このコードは、クライアントから5秒ごとに要求する必要があります。 – StuperUser

答えて

1

あなたの編集から、チャットアプリケーションを構築するには、5秒ごとに反復タスクを実行するページ以上のものが必要です。

単純なチャットでは、JavaScriptを使用してAJAXとsetInterval()メソッドを使用することができますが、そうすることですべてのスレッドをApacheなどのHTTPサーバーと結びつけることができます。

もっと慎重なチャットでは、多くのテクノロジで作成された別個のHTTPサーバーを使用するため、nodeに基づいてsocket.ioなどの新興テクノロジを調べることができます。

3

あなたのコメントを見ると、実際にチャット機能が構築されていることがわかります。チャット機能は、5秒ごとに継続的なリクエストについてより意味を持ちます。

これを実現するには、ASP.NET WebメソッドとAJAXテクノロジの使用をお勧めします。

setInterval(function() { 
        $.ajax({ 
         url: "/Chat.asmx" 
          , type: "POST" 
          , contentType: 'application/json; charset=utf-8' 
          , data: '{ ConversationID: "' + ConversationID + '"}' 
          , dataType: 'json' 
          , success: function (data) { 

           //do something with data 

          } 
        }); 
       }, 5000); 

Chat.asmx:あなたが要求以下のような

何かがあなたのjavascript/jqueryのための良いスタートとなり、新たなチャットメッセージを返すためにJavaScriptで5秒ごとに行うことができますjQuery.ajaxを使用

あなたのウェブメソッドになります。迅速な方法

http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

が、推奨されませんよう、スタンドアロン.aspxページ上のリピーターにチャットメッセージを持つことができる場所jQuery.loadを使用することです。詳細はASP.NETのWebメソッドに見てなど、ページ上のdivにこのロードを保つ:

setInterval(function() { 
    $(".chatmessages").load("ChatConversation.aspx?id=" + ConversationID); 
}, 5000); 

を他の人が示唆したように、この

+0

ご返信ありがとうございます。上記の文脈で単純なコードを分かち合うことができれば、私はそれを感謝します。 – Azeem

+0

私の編集をご覧ください。 – Curt

2

詳細はjQuery.loadを参照してください使用アヤックスとclietnのEVからデータを取得します5秒間。 ここに小さなサンプルがあります。

これを機能させるには、jQuery JavaScriptフレームワークを組み込む必要があります。

クライアント側のjavascript:

public class YourPage : Page 
{ 

    [WebMethod] 
    public static object GetData() { 
     // return your data here 
     return new {Data1 = ..., Data2 = ...}; 
    } 
} 
:あなたのaspxページのウィッヒで「ページ方式」を記述する必要がサーバーサイドで

// execute this on dom ready 
$(document).ready(function() {  
    // call function getData every 5 seconds: 
    setInterval("getData()", 5000); 
}); 

// Call an asp PageMethod via an ajax call 
function getData() { 
    $.ajax({ 
     type: "POST", 
     async: true, 
     contentType: "application/json; charset=utf-8", 
     url: "YourPage.aspx/GetData", 
     // optional post some data 
     // data: JSON.stringify(data),   
     success: dataReceived 
    });   
} 

// callback function is called, when data is recevied 
function dataReceived(data, textStatus, jqXHR) { 
    // your data is in data.d 

} 

あなたはjavascriptを呼び出し、AJAXによって呼び出すことができる静的メソッドです

パラメータでページメソッドにデータを渡すことができます。パラメータの名前は、$ .ajaxに渡すjsonオブジェクトのプロパティの名前と正確に一致する必要があります。

関連する問題