Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DateTime.UtcNow在Silverlight应用程序中的可靠性如何?_Silverlight_Datetime_Caching_Utc - Fatal编程技术网

DateTime.UtcNow在Silverlight应用程序中的可靠性如何?

DateTime.UtcNow在Silverlight应用程序中的可靠性如何?,silverlight,datetime,caching,utc,Silverlight,Datetime,Caching,Utc,我有一个silverlight应用程序,用户将在不同的时区运行 这些应用程序在启动时从服务器加载数据,然后将其缓存在隔离存储中 当我更改服务器上的数据时,我希望能够更改“上次更新时间”,以便所有silverlight客户端在下次检查此日期时下载最新数据 但是,,我对如何处理时区问题感到有点困惑,因为如果服务器位于纽约并且更新时间设置为2010-01-01 17:00:00,而西雅图的客户端检查将其与当地时间2010-01-01 14:00:00进行比较,则不会更新并将继续提供三个多小时的旧数据

我有一个silverlight应用程序,用户将在不同的时区运行

这些应用程序在启动时从服务器加载数据,然后将其缓存在隔离存储中

当我更改服务器上的数据时,我希望能够更改“上次更新时间”,以便所有silverlight客户端在下次检查此日期时下载最新数据

但是,,我对如何处理时区问题感到有点困惑,因为如果服务器位于纽约并且更新时间设置为2010-01-01 17:00:00,而西雅图客户端检查将其与当地时间2010-01-01 14:00:00进行比较,则不会更新并将继续提供三个多小时的旧数据

我的解决方案是始终发布UTC时间中的更新时间,而不是服务器上的时间,然后让Silverlight应用程序检查日期时间。UtcNow

这听起来很简单,还是他们的问题,例如,计算机上的时区设置不正确,因此SilverlightApp没有报告正确的UTC时间根据经验,有人能说使用DateTime.UtcNow这样的缓存刷新在所有情况下都有效的可能性有多大吗?


如果DateTime.UtcNow不可靠,我将只使用递增的数据版本integer但在其他情况下,关闭时区同步将有助于彻底了解如何在silverlight应用程序中解决此问题。

DateTime.UtcNow与客户端系统上的时钟一样可靠。所以问题完全独立于Silverlight或.NET,问题是您对客户端机器上的系统时钟有多信任

您需要权衡机器用户可能由于未正确设置时区而在其机器上错误设置时间的风险。这种风险完全是人的本性


使用递增版本号只有一个缺点,您需要先检索当前值,然后才能设置新值。如果这不是一个问题,那么就这样做,消除时区周围可能存在的FUD。

对,第二种方法听起来更确定,也许同时让silverlight客户端将其本地时间发送回服务器,并生成关于有多少关闭以及关闭多少的报告会很有趣。您似乎还可以通过以下命令获取时区信息:System.TimeZoneInfo.Local