我使用 continuationWith(anotherTask) 创建了一个任务,如下所示。我想找出第一个任务完成其工作所花费的时间。我在 task1 和子任务之间共享变量“task1StartedDateTime”。这会没有任何问题吗?
public static void MyMethod()
{
var task1StartedDateTime = DateTime.Now;
var task1 = doWorkAsync();
task1.ContinueWith(t1 => {
var task1TookTime = DateTime.Now - task1StartedDateTime;
Console.WriteLine($"Task 1 took {task1TookTime}");
//Some other work of this child task
});
}
最佳答案
是的,它会起作用。然而,最好使用 StopWatch
类,因为这是一种更准确、更有效的计算方法运行时间的方法,可以处理机器上运行的任何内容。有关后一个参数的更多信息,请查看 here :
var stopwatch = StopWatch.StartNew();
var task1 = doWorkAsync();
task1.ContinueWith(t1 => {
stopwatch.Stop();
Console.WriteLine($"Task 1 took {stopwatch.EllapsedMilliseconds} ms.");
//Some other work of this child task
}
关于c# - 在 ContinueWith(anotherTask) + C# 任务并行库中共享变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48555972/