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