Как я могу сделать таймер для выхода из моей программы
Мне нужно сделать таймер, который будет выходить из моей программы через 3 секунды - когда Bool установлен в true - как я могу это сделать? Я попытался использовать несколько базовых таймеров в новом классе, но, похоже, это не работает. Я использовал таймер здесь http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx но он не работает.
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;
}
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
Game1.timedOrNo = true
}
}
2 ответа
Предполагая, что вы используете XNA (из списка тегов), вы должны иметь следующий метод в вашем Game
учебный класс:
/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Update(GameTime gameTime)
{
}
Поэтому вам нужно проверить, прошло ли 3 секунды, и затем выйти:
/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Update(GameTime gameTime)
{
if (gameTime.TotalGameTime.TotalSeconds >= 3)
this.Exit;
}
Предполагая, что у вас действительно есть aTimer.Start();
где-то в вашем коде, с чем вы разместили таймер действительно вызовет OnTimedEvent
через две секунды и установите bool
в true
, Все, что вам нужно сделать сейчас, это проверить состояние bool
где-то, предпочтительно в Update
метод Game1
с Exit
метод как это:
protected override void Update(GameTime gameTime)
{
if (timedOrNo)
{
Exit();
}
}
В качестве альтернативы, поскольку вы можете выйти только один раз, логическое значение на самом деле не нужно, и вы можете закрыть приложение непосредственно при срабатывании таймера:
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
Game1.Exit();
}
Как примечание, вы должны инициировать Interval непосредственно в конструкторе с помощью new System.Timers.Timer(2000);
вместо установки 10 секунд, а затем сразу 2 вручную. Кроме того, вы должны изменить 2000
в 3000
если вы хотите, чтобы он вышел через три секунды, как вы изначально просили.