7

System.Timersパッケージを同梱しましたが、次のように入力します。

Timer.Elapsed; //its not working, the property elapsed is just not there.

VB.NETにあったことを覚えています。なぜこれが機能しないのですか?

4

4 に答える 4

35

それは財産ではありません。イベントです。

したがって、タイマーが作動するたびに実行されるイベントハンドラーを提供する必要があります。このようなもの:

public void CreateTimer() 
{
    var timer = new System.Timers.Timer(1000); // fire every 1 second
    timer.Elapsed += HandleTimerElapsed;
}

public void HandleTimerElapsed(object sender, ElapsedEventArgs e)
{
    // do whatever it is that you need to do on a timer
}
于 2012-10-05T22:36:46.667 に答える
6

Microsoftの例。 http://msdn.microsoft.com/en-us/library/system.timers.timer.elapsed.aspx

経過はイベントであるため、イベントハンドラーが必要です。

using System;
using System.Timers;

public class Timer1
{
private static System.Timers.Timer aTimer;

public static void Main()
{       
    // Create a timer with a ten second interval.
    aTimer = new System.Timers.Timer(10000);

    // Hook up the Elapsed event for the timer.
    aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

    // Set the Interval to 2 seconds (2000 milliseconds).
    aTimer.Interval = 2000;
    aTimer.Enabled = true;

    Console.WriteLine("Press the Enter key to exit the program.");
    Console.ReadLine();       
}

// Specify what you want to happen when the Elapsed event is  
// raised. 
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
    Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
}
}

/* This code example produces output similar to the following:

Press the Enter key to exit the program.
The Elapsed event was raised at 5/20/2007 8:42:27 PM
The Elapsed event was raised at 5/20/2007 8:42:29 PM
The Elapsed event was raised at 5/20/2007 8:42:31 PM
...
 */
于 2012-10-05T22:37:25.703 に答える
1

ここでの以前の回答はすべて正しいですが、.net 6 / VS2022がリリースされ、null可能性については大きな問題であり、上記のすべての回答はコンパイラ警告CS8622をスローします。

これに対する解決策は、次のように、コールバック関数のパラメーターでソースオブジェクトをnull許容としてマークすることです。

...
    timer.Elapsed += TimerElapsedHandler;
...

public void TimerElapsedHandler(object? source, ElapsedEventArgs e)
{
    //Your Handling Code Here
}
于 2022-01-06T14:42:44.107 に答える
0

イベントハンドラーが必要です。次に、イベントハンドラーの割り当て中に有効にしてから、ハンドラーで条件を停止します。

 Timer = new System.Timers.Timer();
 Timer.Elapsed += new System.Timers.ElapsedEventHandler(PageLoaded);
 Timer.Interval = 3000;
 Timer.Enabled = true;

...................。

 public void PageLoaded(object source, System.Timers.ElapsedEventArgs e)
        {
            // Do what ever here
            if (StopCondition)Timer.Enabled = false;
          
           
        }
于 2020-07-23T08:27:57.263 に答える