Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回任务的异步方法返回的任务表示什么?_C#_Async Await - Fatal编程技术网

C# 返回任务的异步方法返回的任务表示什么?

C# 返回任务的异步方法返回的任务表示什么?,c#,async-await,C#,Async Await,如果使用async声明的async方法的返回类型为Task或Task,则可以等待它。在方法内部,没有任务以C#代码形式返回,但如果是任务,则返回一个值TResult。例如: private static async Task<int> AsyncDemo() { await Task.Delay(1000); return 1; } private静态异步任务AsyncDemo() { 等待任务。延迟(1000); 返回1; } 生成的IL代码返回启动已编译状态机

如果使用async声明的async方法的返回类型为Task或Task,则可以等待它。在方法内部,没有任务以C#代码形式返回,但如果是任务,则返回一个值TResult。例如:

private static async Task<int> AsyncDemo()
{
    await Task.Delay(1000);
    return 1;
}
private静态异步任务AsyncDemo()
{
等待任务。延迟(1000);
返回1;
}

生成的IL代码返回启动已编译状态机的AsyncTaskMethodBuilder的任务。我的问题是这个任务实际上代表什么。我假设它不是一个线程,而是一个状态机的执行。我还假设,当状态机完成时任务完成,或者当异常发生时,任务被设置为故障状态。我感谢你的澄清

任务在概念上表示方法

当方法返回时,任务完成(成功),结果设置为方法返回的值(如果适用)。如果该方法引发异常,则该任务出现故障(已完成,但出现错误)。
操作CanceledException有一个特殊情况:在这种情况下,任务被取消(通过取消完成)


从技术上讲,任务确实代表了状态机,这是对方法的重写。但是由于状态机是隐藏的,所以任务在概念上表示方法本身。

谢谢Stephen,这就是我所想的“:表示异步操作。”