我在一個循環中運行,並以下列方式拉開任務:秒錶在任務似乎是所有任務的添加劑,要測量的只是任務間隔
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);
}
在我的DoSomething()
方法,我有一個計時器:
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);
}
當我通過我的myMsg
的的ElaspedMilliseconds的列表迭代似乎是完全添加劑 - 在第一個的ElaspedMilliseconds可能是300,但最後一個可能是50000(50秒), - 這實際上是一個整個事情需要運行的時間(由另一個計時器測量)。
Updated [my answer](http://stackoverflow.com/a/16259019/200449)。它只是看起來似乎是累加性的,因爲ElapsedMilliseconds值總是以遞增順序輸出 - 按任務完成順序(按任務持續時間順序),這不是任務啓動的順序 – 2013-04-28 07:55:02