【发布时间】:2018-01-22 14:35:44
【问题描述】:
I've figured out how to store Data from a .csv to a List<>.
我有两个列表:ListA 包含每个值的时间戳,ListB 包含值。
看起来像这样:
A (time [ms]) | B (value)
---------------------------
0,00 | 49,33
154,71 | 49,46
244,92 | 49,72
855,11 | 49,64
...
And so on (over 50.000 values)
我的实际问题是:
我想在(几乎)准确的时间使用WriteLine(listA[i]); 将值发送到控制台,就像实际值的时间戳一样。
我想到了一个秒表,我将它与时间戳进行比较以在正确的时刻给出正确的值?
这可能吗?
更新 #1:
这是我的代码。它有效(有点)。但我不确定是否有更好的解决方案?
stopwatch.Start();
while(true)
{
for (int i = 0; i < 50000; i++)
{
if (Math.Abs(stopwatch.Elapsed.TotalMilliseconds - Convert.ToDouble(listA[i]) * 1000) < 10)
{
Console.WriteLine(listB[i]);
}
}
Thread.Sleep(5);
}
更新 #2:
我正在尝试了解 Mong Zhu @disclaimer 的解决方案。 我的目标是创建一个由计时器启动的方法(例如每 100 毫秒)。我已经有围绕这个问题的代码是:时间戳和秒表有时不同步,它会跳过一些值。
这是我的方法(每 100 毫秒调用一次):
public double getvalue()
{
if (stopwatch.ElapsedMilliseconds > Convert.ToDouble(ListA[ListA.Count-1])*1000)
{
stopwatch.Stop();
}
else
{
for (var i = 0; i < ListA.Count; i++)
{
if (Math.Abs(stopwatch.ElapsedMilliseconds - Convert.ToDouble(ListA[i]) * 1000) < 5)
{
value = Convert.ToDouble(ListB[i]);
break;
}
}
}
return value;
}
【问题讨论】:
-
时间戳的维度是多少?那些秒、毫秒或纳秒?如果它不是太小,则计时器可能几乎精确(对于给定的“几乎”值)。
-
简短回答:是的。尽管
855,11毫秒的分辨率可能很难实现。但不幸的是,这不是一个代码编写服务。请提供您编写的至少尝试解决问题的代码。描述你到底在哪里卡住了,我们可以帮助你。到目前为止,这个问题过于宽泛,可能因此而被关闭。 -
@RenéVogt 维度是毫秒。 “这不是代码编写服务”是什么意思?
-
我的意思是,在您的第一篇文章中,您只是提出了一个需要解决的问题,而没有任何代码表明您试图自己解决它。现在帖子看起来不同了,我们可以开始解决您解决方案中的问题。我会更改顺序或
for和while循环。您也可以使用Timer。给我一分钟,然后我写一个答案 -
更正:维度是秒。
标签: c# list csv timestamp stopwatch