0

こんにちは、サイトを初めて使用するので、質問の形式が適切でない場合はお詫びします

2 秒ごとに交互にする必要がある 2 つのイベントがある場合 (1 つはオンで、もう 1 つはオフ)、タイマーの 1 つの開始を 2 秒のオフセットで遅らせるにはどうすればよいですか?

    static void Main(string[] args)
    {

        Timer aTimer = new Timer();
        Timer bTimer = new Timer();

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

        // Set the Interval to 4 seconds 
        aTimer.Interval = 4000;
        aTimer.Enabled = true;
        bTimer.Interval = 4000;
        bTimer.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 status is on {0}", e.SignalTime);
    }
    private static void OnTimedEventb(object source, ElapsedEventArgs b)
    {
        Console.WriteLine("The state is off {0}", b.SignalTime);
    }

だから私は基本的に、プログラムの開始時にONイベントが発生し、2秒後にOFFイベントが発生するようにしたいと考えています。

vs 2012コンソールアプリを使用していますが、Windowsフォームプログラムで使用します

4

1 に答える 1

0

You can create a class level bool called IsOn, for example, and toggle that. You only need one timer to do this as true would mean it's on and false would mean it's off.

private static bool IsOn = true; //default to true (is on)
static void Main(string[] args)
{

    Timer aTimer = new Timer();


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

    // Set the Interval to 2 seconds 
    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)
{
    IsOn = !IsOn;
    Console.WriteLine("The status is {0} {1}", IsOn.ToString(), e.SignalTime);
}
于 2013-04-13T23:47:42.080 に答える