如何制作计时器以退出程序

时间:2013-12-10 19:52:22

标签: c# timer xna boolean exit

我需要制作一个计时器,在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 个答案:

答案 0 :(得分:1)

假设您使用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;
}

答案 1 :(得分:0)

假设您的代码中确实有aTimer.Start();,那么您发布的内容定时器确实会在两秒后触发OnTimedEvent并将bool设置为true。您现在需要做的就是检查bool某个地方的状态,最好是Update Game1方法protected override void Update(GameTime gameTime) { if (timedOrNo) { Exit(); } } Exit method,如下所示:

private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
    Game1.Exit();
}

作为替代方案,由于您只能退出一次,因此不需要布尔值,您可以在定时器触发时直接关闭应用程序:

new System.Timers.Timer(2000);

作为旁注,您应该使用2000直接在构造函数中启动Interval,而不是将其设置为10秒,然后立即手动设置为2。另外,如果您希望它在最初询问的三秒钟后退出,则应将3000更改为{{1}}。