Time 服务器和客户端计时不同

Time 服务器和客户端计时不同,time,timer,server,xna,client,Time,Timer,Server,Xna,Client,我有一个客户机-服务器的情况,其中每一方都在测量时间,但似乎存在一个问题,即测量的时间不匹配。 长话短说,这个想法是有一个倒计时之后,程序需要做的事情。我在服务器端进行测量。但是,需要显示倒计时,所以我要做的是在客户端单独运行它。最终的结果是,当服务器发送一条消息,表示倒数10分钟时,客户端显示时间已到23秒 客户端为XNA,代码: MillisecCount += gameTime.ElapsedGameTime.Milliseconds; if (MillisecCount >= 10

我有一个客户机-服务器的情况,其中每一方都在测量时间,但似乎存在一个问题,即测量的时间不匹配。 长话短说,这个想法是有一个倒计时之后,程序需要做的事情。我在服务器端进行测量。但是,需要显示倒计时,所以我要做的是在客户端单独运行它。最终的结果是,当服务器发送一条消息,表示倒数10分钟时,客户端显示时间已到23秒

客户端为XNA,代码:

MillisecCount += gameTime.ElapsedGameTime.Milliseconds;
if (MillisecCount >= 1000)
    {
    MillisecCount -= 1000;
    Timer++;
    }
然后从可用时间中减去计时器,显示出来。 在服务器端,这种情况正在发生:

async Task timeOut(int delay, CancellationToken ct)
    {
    await Task.Delay(1000 * delay);

    ct.ThrowIfCancellationRequested();
    }

void sendTimeOutMessage(Task t)
    {
    //Send timeout message on network.
    }

void reTime()
    {
    CancellationTokenSource cts = new CancellationTokenSource();
    CancelStack.Push(cts);
    Task t = timeOut(maxTime - Timer, cts.Token);
    t.ContinueWith(sendTimeOutMessage, TaskContinuationOptions.OnlyOnRanToCompletion);
    }

在使用23秒差重定时()的测试场景中,只会在倒计时开始时调用一次。

好的,结果是XNA有时不计算时间,这使得客户端稍微慢了一些。在客户端使用秒表可以同步双方