异步等待和调用等待有什么区别?

时间:2017-10-04 01:16:29

标签: c# winforms asynchronous task

我是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();

0 个答案:

没有答案