C# 如何在windows phone 7上获取以毫秒为单位的时间?

C# 如何在windows phone 7上获取以毫秒为单位的时间?,c#,windows-phone-7,xaml,C#,Windows Phone 7,Xaml,我想以1970年以来的当前时间(以毫秒为单位)命名我的文件 目前,我只有一个计数器,在每个新文件之后递增它。但当应用程序重新启动时,计数器返回到零,当我再次开始保存文件时,会覆盖这些文件 所以我在想,如果我只用秒或毫秒的时间,我就不会有这个问题 所以我的问题是如何在windows mobile上获得以毫秒为单位的时间 这就是我目前正在做的生成文件名的工作 string fileName = savedCounter + ".jpg"; DateTime.UtcNow提供当前Utc时间 新的Da

我想以1970年以来的当前时间(以毫秒为单位)命名我的文件

目前,我只有一个计数器,在每个新文件之后递增它。但当应用程序重新启动时,计数器返回到零,当我再次开始保存文件时,会覆盖这些文件

所以我在想,如果我只用秒或毫秒的时间,我就不会有这个问题

所以我的问题是如何在windows mobile上获得以毫秒为单位的时间

这就是我目前正在做的生成文件名的工作

string fileName = savedCounter + ".jpg";
DateTime.UtcNow提供当前Utc时间

新的DateTime1970,1,1,0,0,0,DateTimeKind.Utc为您提供1970

因此,您可以使用:

var savedCounter = Math.Round((DateTime.UtcNow - new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc)).TotalSeconds);
一些替代命名策略包括:

考虑到1970年的应用程序副本不多,您可能会使用一个基准日期,如new DateTime2012,1,1,0,0,0 您还可以使用DateTime.ToString格式(如yyyyMMddhhmmss)来实现基于日期的字符串,这可能更容易让人阅读,例如使用调试器或独立存储资源管理器
旁白-出于性能原因,请注意不要在一个目录中创建太多文件--在某些情况下,使用单个文件(例如数据库)是有意义的,即使使用时间戳生成文件名,如果应用程序的多个实例可以同时运行,那么还有可能发生冲突。无论是否使用时间戳,您都可能希望执行以下操作:

将计数器初始化为0 生成文件名,将计数器合并到文件名中。 尝试创建该文件,打开该文件以进行独占R/W访问,并要求该文件不存在。 如果由于某种原因文件创建失败,则增加计数器并重复步骤2-4。
事实上,这很可能是像这样的例程所做的。

您只是在使用毫秒来生成唯一的文件名吗?如果是这样,那么使用Guid.NewGuid.ToString可能会更好

一个刻度代表一百纳秒或一千万分之一秒 一秒钟。一毫秒内有10000个滴答声


使用时间或者更好地使用当前架构,将当前计数器保存到IsolatedStorage设置中。它易于使用:

最好使用Guid而不是DateTime

string fileName = System.Guid.NewGuid() + ".jpg";
string fileName = System.Guid.NewGuid() + ".jpg";