Создавая статическое свойство:
public static Double TimeLeft { get; set; }
Это если вы хотите, чтобы Publicliy был доступен из всего вашего контекста, если вы хотите, чтобы он был закрытым, просто измените public
на private
.
Просто примечание, встроенная Timer
не поддерживает опрос в течение оставшегося времени до следующего истечения.Либо вы уменьшаете TimeLeft
в каждом Elapse
событии на 1-секундном таймере, либо можете посмотреть this .
Edit
Вот один из способов сделать это с одним таймером: сначала я объявляю два свойства и одно постоянное поле, которое я использую, не беспокойтесь о том, что они статические, просто так проще запустить его как консольное приложение.
public static Timer SystemTimer { get; set; }
public static double Elapsed { get; set; }
private const double CycleInterval = 1000;
Тогда в моем Main
-методе у меня есть следующее, чтобы инициировать мой Timer
SystemTimer = new Timer();
SystemTimer.Interval = CycleInterval;
SystemTimer.Enabled = true;
SystemTimer.Elapsed += Cycle;
SystemTimer.Start();
Имея это, обработчик Cycle
-vent может выглядеть так:
static void Cycle(object sender, ElapsedEventArgs e)
{
Elapsed += CycleInterval;
if ((Elapsed%5000) == 0.0)
{
Console.WriteLine("5 sec elapsed!");
// Do stuff each 5 sec
}
if ((Elapsed % 10000) == 0.0)
{
Console.WriteLine("10 sec elapsed!");
// Do stuff each 10 sec
}
Console.WriteLine("Elapsed: {0}", Elapsed);
}
У вас также может быть Elapsed
, являющийся TimeSpan
, но вы можете реорганизовать его, как хотите.
Вот мой полный исходный код, который я использовал:
using System;
using System.IO;
using System.Timers;
namespace ConsoleApplication5
{
class Program
{
public static Timer SystemTimer { get; set; }
public static double Elapsed { get; set; }
private const double CycleInterval = 1000;
static void Main(string[] args)
{
SystemTimer = new Timer();
SystemTimer.Interval = CycleInterval;
SystemTimer.Enabled = true;
SystemTimer.Elapsed += Cycle;
SystemTimer.Start();
while (true) ;
}
static void Cycle(object sender, ElapsedEventArgs e)
{
Elapsed += CycleInterval;
if ((Elapsed%5000) == 0.0)
{
Console.WriteLine("5 sec elapsed!");
// Do stuff each 5 sec
}
if ((Elapsed % 10000) == 0.0)
{
Console.WriteLine("10 sec elapsed!");
// Do stuff each 10 sec
}
Console.WriteLine("Elapsed: {0}", Elapsed);
}
}
}
И вот как это выглядит, когда я запускаю его:
![enter image description here](https://i.stack.imgur.com/8a3uE.png)