dyn*_*ser 5 c# time stopwatch winforms
我试图从给定的时间开始秒表(从数据库中提取的十进制值).但是,因为Stopwatch.Elapsed.Add返回一个新的时间跨度而不是修改秒表,我无法找到最好的前进方法.
var offsetTimeStamp = new System.TimeSpan(0,0,0).Add(TimeSpan.FromSeconds((double)jd.ActualTime));
Stopwatch.Elapsed.Add(offsetTimeStamp);
Stopwatch.Start();
Run Code Online (Sandbox Code Playgroud)
我有什么想法可以做到这一点?干杯
法线StopWatch不支持偏移时间跨度的初始化,因此是TimeSpana struct,因此Elapsed是不可变的.你可以写一个包装器StopWatch:
public class StopWatchWithOffset
{
private Stopwatch _stopwatch = null;
TimeSpan _offsetTimeSpan;
public StopWatchWithOffset(TimeSpan offsetElapsedTimeSpan)
{
_offsetTimeSpan = offsetElapsedTimeSpan;
_stopwatch = new Stopwatch();
}
public void Start()
{
_stopwatch.Start();
}
public void Stop()
{
_stopwatch.Stop();
}
public TimeSpan ElapsedTimeSpan
{
get
{
return _stopwatch.Elapsed + _offsetTimeSpan;
}
set
{
_offsetTimeSpan = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以添加一个开始时间跨度:
var offsetTimeStamp = TimeSpan.FromHours(1);
var watch = new StopWatchWithOffset(offsetTimeStamp);
watch.Start();
System.Threading.Thread.Sleep(300);
Console.WriteLine(watch.ElapsedTimeSpan);// 01:00:00.2995983
Run Code Online (Sandbox Code Playgroud)