c# – 使用Async方法的秒表
发布时间:2020-12-15 03:51:39 所属栏目:百科 来源:网络整理
导读:我有一些代码如下: public void Start(){ var watch = new Stopwatch(); watch.Start(); Task.Factory.StartNew(MyMethod1); Task.Factory.StartNew(MyMethod2); watch.Stop(); Log(watch.ElapsedMilliseconds); Task.Factory.StartNew(MyMethod3);} 因为My
我有一些代码如下:
public void Start() { var watch = new Stopwatch(); watch.Start(); Task.Factory.StartNew(MyMethod1); Task.Factory.StartNew(MyMethod2); watch.Stop(); Log(watch.ElapsedMilliseconds); Task.Factory.StartNew(MyMethod3); } 因为MyMethod1和MyMethod2被称为异步watch.Stop()在错误的时间被调用.我如何确保.Stop在MyMethod1和MyMethod2完成后被调用并记录,但确保MyMethod3不必等待. 我想在Start()方法中保留所有的Stopwatch功能,并且没有我的任何3种方法中的记录,即MyMethod1,MyMethod2和MyMethod3 解决方法
您可以使用Task.Factory.ContinueWhenAll方法.
watch.Start(); var t1 = Task.Factory.StartNew(MyMethod1); var t2 = Task.Factory.StartNew(MyMethod2); Task.Factory.ContinueWhenAll(new [] {t1,t2},tasks => watch.Stop()); 如果您是针对.NET 4.5及更高版本,您还可以使用Task.WhenAll方法.当所有传递的任务对象完成后,它返回一个完成的任务. Task.WhenAll(t1,t2).ContinueWith(t => watch.Stop()); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |