c# - 将我的应用程序时间与外部服务器时间同步的最佳方法是什么?

标签 c# synchronization clock

我正在考虑将系统的本地时间更改为服务器的时间然后使用它,但我敢打赌还有其他方法可以做到这一点。我一直试图在 C# 中找到类似时钟的东西,但找不到任何东西。我正在接收 DateTime 格式的服务器时间。

编辑: 我需要在同一时间服务器工作时使用我的应用程序。我只想获得一次服务器时间,然后使用我从服务器获得的时间让我的应用程序在 while 循环中工作。我的系统时间和服务器时间之间可能存在差异(甚至 5 秒),这就是我想要这样做的原因。

最佳答案

你的意思并不完全清楚,但你当然可以创建你自己的 IClock 接口(interface),你会在代码中的任何地方使用它,然后编写一个定期与你的服务器同步的实现(或使用 NTP)。

我的 Noda Time项目已经使用了可注入(inject)时钟的想法——不是为了同步目的,而是为了可测试性。 (时间服务基本上是一种依赖。)基本上这个想法是可行的:)您可能找不到任何已经这样做的东西,但写起来应该不会太难。不过,您需要考虑如何调整时间 - 例如,如果服务器时间领先于您的“上次服务器时间 + 本地时间测量值”,您可能希望逐渐调整时间而不是离散跳跃。

当然,这总是假设您确实希望它在您的应用程序本地。另一种选择(这可能不合适,具体取决于您的上下文)是要求主机运行时间同步客户端(我相信这些天Windows默认运行)并且如果差异就开始失败您的服务器和客户端之间变得太大。 (它永远不会完全同步,或者至少不会持续很长时间 - 您需要留出一些余地。)

关于c# - 将我的应用程序时间与外部服务器时间同步的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15130459/

相关文章:

linux - 面对不同步的时钟,inotify 是否有效?

c++ - 从时钟周期获取时间

c# - Server.MapPath 问题?

c# - 在 Entity Framework Core 中使用具有多对多关系的列表

c - 信号量并发

android - iOS 11 AVPlayer/mp3 currentTime 不准确

java - 如何以毫秒精度同步 2 个系统之间的时间?

android - 每秒更新 TextView

c# - KDB 简单键控表性能

c# - 有人可以给我一个正则表达式来识别编码的 URL 吗?