我需要一些帮助才能让我的游戏计时器正常运行。我不能让它们一起运行,显示正确的值。
计时器1:
当玩家按下#34;开始"当前DateTime
将发送到数据库。游戏时间是时间戳+2小时。第一个计时器显示自按下开始按钮后剩余的时间,因此它从" 2:00:00"直到" 0:00:00"。当这个计时器结束时,游戏就结束了。
计时器2: 我还需要一个与另一个计时器一起运行的计时器(或者我必须使用相同的计时器吗?),从" 0:15:00"并且运行正好15分钟。 0 15分钟后,该计时器向数据库发送内容,然后在" 0:00:00"直到游戏时间结束才这样做。
这是我目前正在使用的代码。我知道......它不是很整洁,第一次使用这些计时器并且无法想出更好的东西。
Timer gameTimer;
DateTime gameEndTime;
int updateTime;
int fifteenMinutes = (((100 * 10) * 60) * 15);
private void GameTimer_Elapsed(object sender, ElapsedEventArgs e)
{
TimeSpan tsGameTime = gameEndTime.Subtract(DateTime.Now);
updateTime += 100;
if (updateTime == (fifteenMinutes - 100))
{
updateTime = 0;
}
TimeSpan tsUpdateTime = TimeSpan.FromMilliseconds(fifteenMinutes - updateTime);
RunOnUiThread(() =>
{
txtGameTime.Text = string.Format("Time till next game: {0:hh\\:mm\\:ss}", tsGameTime);
txtLocationTime.Text = string.Format("Time till update: {0:hh\\:mm\\:ss}", tsUpdateTime);
});
}
现在我无法让这些计时器在相同的时间内运行,如:
计时器1:" 1:44:59" 定时器2:" 0:00:01"
重启后,计时器2总是停留几毫秒,经过几次重启后,计时器2落后一秒多。那么,我是否需要1个中央计时器,并在同一TextView
个事件中更新Elapsed
?或者我需要2个单独的计时器?