TimeSpan私有字段startTimeStamp和DateTime.Ticks属性有什么区别?有没有一种简单的方法来检索startTimeStamp(不使用反射)?

startTimeStamp是长的,它不是 aTimeSpan也不一定是DateTime.Ticks。
这将StopWatch是启动的时间,这将是基于高性能计数器的时间,或者DateTime.Ticks如果没有高性能计数器可用。
startTimeStamp您可以通过调用Stopwatch.GetTimeStamp()静态方法获取生成的当前值。
startTimeStamp不是直接暴露的,但您可以通过调用计算它
Stopwatch.GetTimeStamp() - stopwatch.GetRawElapsedTicks()
以下是用于初始化该字段的方法的来源:
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,你也可以自己调用。
您只能估计开始时间戳。您所要做的就是在启动 StopWatch 之后调用 GetTimeStamp()。
System.Diagnostics.Stopwatch watch = new Stopwatch();
watch.Start();
long ts = Stopwatch.GetTimestamp();

和
ts => 62583777603