0

このコードが機能しない理由を教えてください。ポストバック発火がないためだと思います。ポストバックを有効にするにはどうすればよいですか? ポストバックを起動してメソッドを実行するタイマーを有効にしようとしています (ここでは簡略化されています)。これを .NET 2.0 に実装する必要があるため、UpdatePanel または Ajax Timer を使用できません。

出力は次のとおりです。

ページ読み込み

タイマーティック

my_method

しかし、ラベルは表示されません。

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        System.Diagnostics.Trace.WriteLine("Page Load");
        System.Timers.Timer timer = new System.Timers.Timer();
        timer.Interval = 5000;
        timer.Enabled = true;
        timer.Start();
        timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);



    }
    protected void timer_Elapsed(object sender, EventArgs e)
    {
        System.Diagnostics.Trace.WriteLine("Timer Tick");
        my_method();  
    }


    protected void my_method()
    {
        System.Diagnostics.Trace.WriteLine("my_method");
        Label1.Visible = true;
    }

}
4

2 に答える 2

3

タイマーは、古い破棄されたページのインスタンスで動作しています。このインスタンスはまだメモリ内にありますが、既にレンダリング フェーズが実行されており、二度と使用されることはありません。

PostBack を取得するには、Ajax タイマーまたはプレーンな JavaScript を使用する必要があります。

于 2013-01-07T20:08:54.583 に答える
1

サーバーでタイマーが作動しています。クライアントにはすでにページがあり、クライアント側で何か (javascript など) が新しい要求を発行しない限り、自動的に更新を要求することはありません。それが起こると、ページの新しいバージョンがレンダリングされます。

更新された情報を探すためにイベントを発生させるには、javascript 側に何かを実装する必要があります。その後、必要に応じて DOM を更新できます。

于 2013-01-07T20:09:14.107 に答える