3

以下TimerSystem.Windows.Forms.Timer C# コードです。

Timer myTimer = new Timer();
myTimer.Interval = 10000;
myTimer.Tick += new EventHandler(doSth);
myTimer.Start();

タイマーはdoSth10秒ごとになりますがdoSth、開始時にすぐにさせるにはどうすればよいですか?

を拡張するカスタム タイマーを作成しようとしましたが、メソッドTimerをオーバーライドできません。Start

今のところ、私のコードは次のとおりです。

myTimer.Start();
doSth(this, null);

良くないと思います。それを改善する方法は?

4

3 に答える 3

15

パーフェクトだ。何も変えないでください。

于 2012-08-08T14:09:27.900 に答える
2

正確な要件はわかりませんが、別のメソッド内のタイマーコールバック内にコードを入れてみませんか?

例えば

private void tmrOneSec_Tick(object sender, System.EventArgs e)
{
    DoTimerStuff();
}

private void DoTimerStuff()
{
    //put the code that was in your timer callback here
}

そうすれば、アプリケーションの起動時に DoTimerStuff() を呼び出すことができます。

于 2012-08-08T14:13:27.047 に答える
1

タイマーにはフォームレベルのスコープが必要ですが、それがあるかどうかは明らかではありません。私は好奇心から小さ​​な例を作りましたが、それは私のために働いています:

    private void Form1_Load(object sender, EventArgs e)
    {
        txtLookup.Text = "test";
        DoSomething();
        timer1.Start();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        DoSomething();
    }

    private void DoSomething()
    {
        txtLookup.Text += "ticking";
    }

10 秒ごとに、テキスト ボックス内のテキストに別の「カチカチ音」を追加します。

あなたは言う、

「タイマーは 10 秒ごとに実行しますが、開始時にすぐに実行するにはどうすればよいですか?」

つまり、タイマーの開始メソッドを呼び出す直前に doSth を呼び出します。

于 2012-08-08T14:16:36.977 に答える