Stoper w zadaniu wydaje się być addytywny we wszystkich zadaniach, chce mierzyć tylko interwał zadania
Pracuję w pętli i rozpoczynam zadania w następujący sposób:
var iResult = new List<Task>();
foreach(var i in myCollection)
{
var task = Task.Factory.StartNew(() =>
DoSomething(), TaskCreationOptions.LongRunning);
task.ContinueWith(m => myResponseHandler(m.Result));
iResult.Add(task);
}
W moimDoSomething()
metoda, mam timer:
public static myMsg DoSomething()
{
var timer = System.Diagnostics.Stopwatch.StartNew();
DoLongRunningTask(); //If it matters this hits a REST endpoint (https)
timer.Stop();
return new myMsg(timer.ElaspedMilliseconds);
}
Kiedy przeglądam moją listęmyMsg
Wydaje się, że ElaspedMilliseconds są całkowicie addytywne - ElaspedMilliseconds na pierwszym mogą mieć wartość 300, ale ostatnia może wynosić 50000 (50 sekund) - co w rzeczywistości jest przybliżonym czasem, jaki zajmuje cała rzecz do uruchomienia (mierzona przez inny zegar ).