从1个时间戳运行2个计时器并正确显示

时间:2018-03-31 15:22:23

标签: c# android xamarin

我需要一些帮助才能让我的游戏计时器正常运行。我不能让它们一起运行,显示正确的值。

计时器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个单独的计时器?

0 个答案:

没有答案