TimeSpan
私有字段startTimeStamp
和DateTime.Ticks
属性有什么区别?有没有一种简单的方法来检索startTimeStamp
(不使用反射)?
问问题
689 次
3 回答
5
startTimeStamp
是长的,它不是 aTimeSpan
也不一定是DateTime.Ticks
。
这将StopWatch
是启动的时间,这将是基于高性能计数器的时间,或者DateTime.Ticks
如果没有高性能计数器可用。
startTimeStamp
您可以通过调用Stopwatch.GetTimeStamp()
静态方法获取生成的当前值。
startTimeStamp
不是直接暴露的,但您可以通过调用计算它
Stopwatch.GetTimeStamp() - stopwatch.GetRawElapsedTicks()
于 2013-08-26T14:04:08.813 回答
2
以下是用于初始化该字段的方法的来源:
public static long GetTimestamp() {
if(IsHighResolution) {
long timestamp = 0;
SafeNativeMethods.QueryPerformanceCounter(out timestamp);
return timestamp;
}
else {
return DateTime.UtcNow.Ticks;
}
}
[DllImport(ExternDll.Kernel32)]
[ResourceExposure(ResourceScope.None)]
public static extern bool QueryPerformanceCounter(out long value);
既然这个方法是public
,你也可以自己调用。
于 2013-08-26T14:03:46.327 回答
1
您只能估计开始时间戳。您所要做的就是在启动 StopWatch 之后调用 GetTimeStamp()。
System.Diagnostics.Stopwatch watch = new Stopwatch();
watch.Start();
long ts = Stopwatch.GetTimestamp();
和
ts => 62583777603
于 2013-08-26T14:10:58.230 回答