C# 编译器是否可以创建具有StackOverflowException的异步代码?
参考答案:C# 编译器是否可以创建具有StackOverflowException的异步代码?,c#,stack-overflow,async-await,c#-5.0,C#,Stack Overflow,Async Await,C# 5.0,参考答案: 基本上,由于编译器正在创建一个使用递归的状态机,是否有可能一个等待太多的类会导致编译器生成将抛出异常的代码?与您的想法不同。编译器创建一个状态机,它将调度自己,而不是调用自己。调度创建一个蹦床,重置堆栈。不是按照您的想法。编译器创建一个状态机,它将调度自己,而不是调用自己。调度创建了一个重设堆栈的蹦床。如果您询问编译器生成的状态机是否可能运行到StackOverflowException,我会说这是可能的,因为它是软件,但可能性非常小。你为什么这么问?@PauloMorgado:为了
基本上,由于编译器正在创建一个使用递归的状态机,是否有可能一个等待太多的类会导致编译器生成将抛出异常的代码?与您的想法不同。编译器创建一个状态机,它将调度自己,而不是调用自己。调度创建一个蹦床,重置堆栈。不是按照您的想法。编译器创建一个状态机,它将调度自己,而不是调用自己。调度创建了一个重设堆栈的蹦床。如果您询问编译器生成的状态机是否可能运行到StackOverflowException,我会说这是可能的,因为它是软件,但可能性非常小。你为什么这么问?@PauloMorgado:为了更好地了解async/await是如何工作的,以及它的局限性是什么。但我仍然想知道为什么要问这个问题。你不是问它是否可重入,而是问它是否有缺陷。如果你问编译器生成的状态机是否有可能运行到StackOverflowException,我会说这是可能的,因为它是软件,但可能性非常小。你为什么这么问?@PauloMorgado:为了更好地了解async/await是如何工作的,以及它的局限性是什么。但我仍然想知道为什么要问这个问题。你不是在问它是否是可重入的,你是在问它是否有缺陷。