我正在考虑将系统的本地时间更改为服务器的时间然后使用它,但我敢打赌还有其他方法可以做到这一点。我一直试图在 C# 中找到类似时钟的东西,但找不到任何东西。我正在接收 DateTime 格式的服务器时间。
编辑: 我需要在同一时间服务器工作时使用我的应用程序。我只想获得一次服务器时间,然后使用我从服务器获得的时间让我的应用程序在 while 循环中工作。我的系统时间和服务器时间之间可能存在差异(甚至 5 秒),这就是我想要这样做的原因。
最佳答案
你的意思并不完全清楚,但你当然可以创建你自己的 IClock
接口(interface),你会在代码中的任何地方使用它,然后编写一个定期与你的服务器同步的实现(或使用 NTP)。
我的 Noda Time项目已经使用了可注入(inject)时钟的想法——不是为了同步目的,而是为了可测试性。 (时间服务基本上是一种依赖。)基本上这个想法是可行的:)您可能找不到任何已经这样做的东西,但写起来应该不会太难。不过,您需要考虑如何调整时间 - 例如,如果服务器时间领先于您的“上次服务器时间 + 本地时间测量值”,您可能希望逐渐调整时间而不是离散跳跃。
当然,这总是假设您确实希望它在您的应用程序本地。另一种选择(这可能不合适,具体取决于您的上下文)是要求主机运行时间同步客户端(我相信这些天Windows默认运行)并且如果差异就开始失败您的服务器和客户端之间变得太大。 (它永远不会完全同步,或者至少不会持续很长时间 - 您需要留出一些余地。)
关于c# - 将我的应用程序时间与外部服务器时间同步的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15130459/