public double TimeEventMedian(Action function)
{
List<double> values = new List<double>();
GC.Collect();
function();
int count = 0;
Stopwatch swTotal = new Stopwatch();
swTotal.Start();
while (swTotal.Elapsed.TotalSeconds < 1 && values.Count < 100)
{
sw.Restart();
function();
sw.Stop();
values.Add(sw.Elapsed.TotalSeconds);
}
return values[(values.Count - 1) >> 1];
}
}