我是c#的新手并试图理解以下两个实现之间的区别。看起来他们两个都完全相同,输出完全相同。如果两种情况都是同步调用run方法,async等待真正提供什么值?或者这里没有任何好处?
private async Task<int> MyTask(CancellationToken cancellationToken)
{
Log.Debug("Task started");
await Task.Delay(5000, cancellationToken);
Log.Debug("Task ended");
return 0;
}
public async Task<int> Run()
{
var result = await MyTask(_cancellationToken);
return result;
}
这是如何调用Run方法的
var returnCode = jobRunner.Run().Result;
这个实现?
private int MyTask(CancellationToken cancellationToken)
{
Log.Debug("Task started");
var task = Task.Delay(5000, cancellationToken);
task.Wait(cancellationToken);
Log.Debug("Task ended");
return 0;
}
public int Run()
{
var result = MyTask(_cancellationToken);
return result;
}
本例中调用Run方法
var returnCode = jobRunner.Run();