这是“真正的异步”吗(即非阻塞且未创建新线程)?
build/reports/project/dependencies/index.html
此外,它甚至正确吗?
答案 0 :(得分:0)
假设DoSomethingAsync()方法正在执行一些异步操作,则可以删除asyncTask.Start()调用。我将删除其中包含Task.Delay(1000)的循环,因为即使任务在此之前完成,它也会延迟一整秒。至少您可以这样做:
var asyncTask = DoSomethingAsync();
log.Info("Started!");
await asyncTask;
log.Info("Complete!);
如果您想每秒写一个“仍在运行”的日志条目,然后在log.Info(“ Started”)之后,您可以启动一个执行日志记录的计时器,然后在等待asyncTask之后停止它:
try
{
var asyncTask = DoSomethingAsync();
log.Info("Started!");
timerRunningLog.Start();
await asyncTask;
}
catch (Exception ex)
{
// do something with the exception... (e.g. log, throw)
}
finally
{
timerRunningLog.Stop();
log.Info("Complete!);
}
以下是一些不错的信息:Async/Await - Best Practices in Asynchronous Programming