三国卡牌客户端基础资源仓库
hch
4 天以前 cdac25a8e4f91a4663bf5f80994538dd263b757c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using System.Diagnostics;
 
namespace Cysharp.Threading.Tasks.Internal
{
    internal readonly struct ValueStopwatch
    {
        static readonly double TimestampToTicks = TimeSpan.TicksPerSecond / (double)Stopwatch.Frequency;
 
        readonly long startTimestamp;
 
        public static ValueStopwatch StartNew() => new ValueStopwatch(Stopwatch.GetTimestamp());
 
        ValueStopwatch(long startTimestamp)
        {
            this.startTimestamp = startTimestamp;
        }
 
        public TimeSpan Elapsed => TimeSpan.FromTicks(this.ElapsedTicks);
 
        public bool IsInvalid => startTimestamp == 0;
 
        public long ElapsedTicks
        {
            get
            {
                if (startTimestamp == 0)
                {
                    throw new InvalidOperationException("Detected invalid initialization(use 'default'), only to create from StartNew().");
                }
 
                var delta = Stopwatch.GetTimestamp() - startTimestamp;
                return (long)(delta * TimestampToTicks);
            }
        }
    }
}