using System;
using System.Threading;
public class Test
{
private
static Random
rand = new Random
();
public static void Main()
{
int Count;
double[] Results = new double[100];
var TimeSec = 3;
var ret = GetData(TimeSec, out Count, ref Results);
for (var i = 0; i < Count; i++)
{
Console.WriteLine(string.Format("Result[{0}] = {1}", i, Results[i]));
}
}
private static double[] GetRandomData(int maxLength)
{
int length
= rand.
Next(maxLength
) % maxLength
; var randData = new double[length];
for (var i = 0; i < length; i++)
{
randData
[i
] = rand.
Next(100); }
return randData;
}
public static int GetData(int Time_s, out int Count, ref double[] Results)
{
var lengthIncrement = 100;
Count = 0;
try
{
DateTime timeout = DateTime.UtcNow.AddSeconds(Time_s);
double[] values;
while (DateTime.UtcNow < timeout)
{
values = GetRandomData(10);
//Before copying over value, make sure we won't overflow
//If we will, extend array
if (Count + values.Length > Results.Length) {
var temp = new double[Results.Length + lengthIncrement];
Array.Copy(Results, temp, Count);
Results = temp;
}
Array.Copy(values, 0, Results, Count, values.Length);
Count += values.Length;
Thread.Sleep(500);
}
}
catch (Exception ) { }
return 0;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHJpdmF0ZSBzdGF0aWMgUmFuZG9tIHJhbmQgPSBuZXcgUmFuZG9tKCk7CgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQlpbnQgQ291bnQ7CgkJZG91YmxlW10gUmVzdWx0cyA9IG5ldyBkb3VibGVbMTAwXTsgCgkJdmFyIFRpbWVTZWMgPSAzOwogICAgICAgIHZhciByZXQgPSBHZXREYXRhKFRpbWVTZWMsIG91dCBDb3VudCwgcmVmIFJlc3VsdHMpOwogICAgICAgIAogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgQ291bnQ7IGkrKykKICAgICAgICB7CiAgICAgICAgCUNvbnNvbGUuV3JpdGVMaW5lKHN0cmluZy5Gb3JtYXQoIlJlc3VsdFt7MH1dID0gezF9IiwgaSwgUmVzdWx0c1tpXSkpOwogICAgICAgIH0KCX0KCQoJcHJpdmF0ZSBzdGF0aWMgZG91YmxlW10gR2V0UmFuZG9tRGF0YShpbnQgbWF4TGVuZ3RoKQoJewoJCWludCBsZW5ndGggPSByYW5kLk5leHQobWF4TGVuZ3RoKSAlIG1heExlbmd0aDsKCQl2YXIgcmFuZERhdGEgPSBuZXcgZG91YmxlW2xlbmd0aF07CgkJZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKCQl7CgkJCXJhbmREYXRhW2ldID0gcmFuZC5OZXh0KDEwMCk7CgkJfQoJCQoJCXJldHVybiByYW5kRGF0YTsKCX0KCQoJcHVibGljIHN0YXRpYyBpbnQgR2V0RGF0YShpbnQgVGltZV9zLCBvdXQgaW50IENvdW50LCByZWYgZG91YmxlW10gUmVzdWx0cykKICAgIHsKCgkgICAgdmFyIGxlbmd0aEluY3JlbWVudCA9IDEwMDsKCSAgICBDb3VudCA9IDA7CgoJICAgIHRyeQoJICAgIHsKCSAgICAgICAgRGF0ZVRpbWUgdGltZW91dCA9IERhdGVUaW1lLlV0Y05vdy5BZGRTZWNvbmRzKFRpbWVfcyk7CgkgICAgICAgIGRvdWJsZVtdIHZhbHVlczsgICAgCgkgICAgICAgIHdoaWxlIChEYXRlVGltZS5VdGNOb3cgPCB0aW1lb3V0KQoJICAgICAgICB7CgkgICAgICAgICAgICB2YWx1ZXMgPSBHZXRSYW5kb21EYXRhKDEwKTsKCQoJICAgICAgICAgICAgLy9CZWZvcmUgY29weWluZyBvdmVyIHZhbHVlLCBtYWtlIHN1cmUgd2Ugd29uJ3Qgb3ZlcmZsb3cKCSAgICAgICAgICAgIC8vSWYgd2Ugd2lsbCwgZXh0ZW5kIGFycmF5CgkgICAgICAgICAgICBpZiAoQ291bnQgKyB2YWx1ZXMuTGVuZ3RoID4gUmVzdWx0cy5MZW5ndGgpIHsKCSAgICAgICAgICAgICAgIHZhciB0ZW1wID0gbmV3IGRvdWJsZVtSZXN1bHRzLkxlbmd0aCArIGxlbmd0aEluY3JlbWVudF07CgkgICAgICAgICAgICAgICBBcnJheS5Db3B5KFJlc3VsdHMsIHRlbXAsIENvdW50KTsKCSAgICAgICAgICAgICAgIFJlc3VsdHMgPSB0ZW1wOwoJICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAKCQoJICAgICAgICAgICAgQXJyYXkuQ29weSh2YWx1ZXMsIDAsIFJlc3VsdHMsIENvdW50LCB2YWx1ZXMuTGVuZ3RoKTsKCSAgICAgICAgICAgIENvdW50ICs9IHZhbHVlcy5MZW5ndGg7CgkgICAgICAgICAgICBUaHJlYWQuU2xlZXAoNTAwKTsKCSAgICAgICAgfSAgICAKCSAgICB9CgkgICAgY2F0Y2ggKEV4Y2VwdGlvbiApIHsgfQoJCgkgICAgcmV0dXJuIDA7Cgl9Cn0K