-2

これは私のコードです:

protected void Button1_Click(object sender, EventArgs e)
        {

            Timer1.Enabled = true;
        }

int _ta = 0;
 protected void Timer1_Tick(object sender, EventArgs e)
        {
            if (_ta < 1)
            {
                _ta++;
                System.Diagnostics.Debug.WriteLine(_ta);

            } 

しかし、WriteLine(_ta);それは一度では止まらず、ただ続くだけです。なんで?どうすればこの効果を達成できますか?

編集:

申し訳ありませんが、私は十分に明確ではありませんでした:

私は意味しました:

System.Diagnostics.Debug.WriteLine(_ta);

_ta が 0 より大きい場合でも、これは引き続き発生します。

4

3 に答える 3

3

あなたの質問と回答、コメントを読みました。あなたは 1 つのことを理解していないようです。The variable '_ta' will be reinitialized with 0 on every requestそれが、'1' が常に印刷されているのを見続ける理由です。

Timer を非標準の方法で使用する理由はいくつかありますが、これは問題ではありません。

同じユーザーからの後続の要求間で変数を保持する場合はsession、変数を格納する ために使用する必要があります。 100%29.aspx

于 2013-06-22T20:12:09.607 に答える
2

_ta行間を読むと、変数を一度だけ (またはゼロ未満である限り) 出力したいように聞こえます。

Winforms新しいプロジェクトでコードを再現すると、コードが正しく機能するため、何かを伝えていないのではないかと思います。

新しい Winforms プロジェクトを作成し、フォームにボタンを追加し、次のコードを追加することで、これを自分で確認できます。

public partial class Form1 : Form
{
    private Timer timer = new Timer();
    int _ta = 0;

    public Form1()
    {
        InitializeComponent();
        timer.Tick += timer_Tick;
    }

    void timer_Tick(object sender, EventArgs e)
    {
        if (_ta < 1)
        {
            _ta++;
            System.Diagnostics.Debug.WriteLine("This should only be called once...");
            System.Diagnostics.Debug.WriteLine(_ta);
        }

        System.Diagnostics.Debug.WriteLine("This should be called every tick...");
    }

    private void button1_Click(object sender, EventArgs e)
    {
        timer.Enabled = true;
    }
}

上記のプログラムは、次の出力を提供します。

ここに画像の説明を入力

于 2013-06-22T19:32:02.693 に答える
1

asp.netでタイマーを反復処理できないのはなぜですか?

これが何を意味するのかわかりません。Timers はシーケンスを表さないため、文字どおりに解釈されます。

しかし、タイマーは1回で止まらず、そのまま継続します。なんで?

そのTimerように設計されているからです。無効にするまでカチカチ音をたて続けます。

どうすればこの効果を達成できますか?

どんな効果?一度だけティックするには?その場合は、最初のポストバック後に無効にします。

ちょっと立ち止まって考えてみてください。手にはタイマーがあり、おそらく Amazon で購入したデバイスです。取扱説明書によると、有効にすると10秒ごとに鳴ります。ここで、最初の呼び出し音が鳴った後、10 秒後に再び鳴る理由を尋ねています。それが目的で設計されたものだからです。そして、あなたはその効果を持たない方法を知りたいですか? 消して!

于 2013-06-22T19:01:29.767 に答える