【发布时间】:2013-09-23 09:03:09
【问题描述】:
我有一个测量仪器,可以创建指定时间的测量值。在此期间,我必须从内部存储器中获取测量值以防止溢出。 目前我有这个:
public int FetchDatalog(int Time_s, double Period, out int Count, ref double[] Results)
{
Count = 0;
try
{
DateTime timeout = DateTime.UtcNow.AddSeconds(Time_s);
double[] values;
while (DateTime.UtcNow < timeout)
{
values = //here is the command to tell the instrument to return 10 results
Count = values.Count();
Thread.Sleep(500);
//HERE IS SOMETHING MISSING <-----
}
}
return 0;
}
所以我有一个函数,它总是在一个循环中读取来自仪器的 10 个结果,直到指定的时间结束。在循环期间,必须合并读取的数据。
在箭头标记的位置,我现在需要将 10 个值合并在一起并最终在结果中返回所有合并值的东西。
如何在长度未知的情况下做到这一点?
(额外的问题是:10 个结果可以是“最多 10 个”结果。有时少于 10 个,所以如果需要只读取 1 个值,我也可以在这里更改,但这会使其变慢。
感谢大家的帮助
在此处添加评论以便阅读 - Sayse
我的意思是合并:
loop1: values[]=1,2,3,4,5,6,7,8,9,0;
loop2: values[]=11,22,33,44,55,66,77,88,99,11
loop3: values[]=111,222,333,444,555,666,777,888,999,111
这三个值最终应该在参数结果中返回为
result[]=1,2,3,4,5,6,7,8,9,0,11,22,33,44,55,66,
77,88,99,11,111,222,333,444,555,666,777,888,999,111
所以它们应该放在一起形成一个更大的数组。
【问题讨论】:
-
合并它们是什么意思?求和,求平均,做一些其他复杂的计算,什么?
-
您是否考虑过返回
List<double>的结果?所有这些与ref和out参数混在一起的东西有点奇怪(你的参数名称也是如此)。 -
离题说明:我认为
Thread.Sleep没有做任何有用的事情 -
为什么不直接声明
List<double>并在您的箭头位置执行theList.AddRange(values);。然后,一旦循环结束,您就可以将所有结果放在一起。 -
我的意思是合并:loop1: values[]=1,2,3,4,5,6,7,8,9,0; loop2: values[]=11,22,33,44,55,66,77,88,99,11 loop3: values[]=111,222,333,444,555,666,777,888,999,111 这三个值最终应该在参数结果中返回结果 []=1,2, 3,4,5,6,7,8,9,0,11,22,33,44,55,66,77,88,99,11,111,222,333,444,555,666,777,888,999,111 所以它们应该放在一个更大的数组中。