TimeSpan
私有字段startTimeStamp
和DateTime.Ticks
属性之间有什么区别?有没有一种简单的方法来检索startTimeStamp
(不使用反射)?
答案 0 :(得分:5)
startTimeStamp
很长,不是TimeSpan
,也不一定是DateTime.Ticks
。
这将是StopWatch
开始的时间,即基于高性能计数器的时间,如果没有高性能计数器,则为DateTime.Ticks
。
您可以通过调用startTimeStamp
静态方法获取生成Stopwatch.GetTimeStamp()
的当前值。
startTimeStamp
未直接曝光,但您可以通过调用
Stopwatch.GetTimeStamp() - stopwatch.GetRawElapsedTicks()
答案 1 :(得分: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
,您也可以自己调用。
答案 2 :(得分:1)
您只能估算开始时间戳。您所要做的就是在启动StopWatch之后调用GetTimeStamp()。
System.Diagnostics.Stopwatch watch = new Stopwatch();
watch.Start();
long ts = Stopwatch.GetTimestamp();
和
ts => 62583777603