【发布时间】:2019-07-08 13:31:25
【问题描述】:
我想在几秒钟内执行某些操作,并将经过的时间作为参数(特别是,lerp 为外部硬件设备配置一个值)。实现这一目标的简单方法是什么?我有点迷失在 C# 可以做线程和定时器的所有方式中。
这是我目前所拥有的,但它看起来很笨重,而且很可能是错误的。
System.Threading.Tasks.Task.Run(async () =>
{
var timeToRun = 5000; // in milliseconds
var timer = new System.Timers.Timer();
var startTime = DateTime.Now;
timer.Elapsed += (s, e) =>
{
var elapsedTime = e.SignalTime - startTime;
var normalizedTime = elapsedTime.TotalMilliseconds / timeToRun;
someValue = Lerp(from, to, normalizedTime);
};
timer.Start();
await System.Threading.Tasks.Task.Delay(timeToRun);
timer.Stop();
});
【问题讨论】:
标签: c# multithreading timer