Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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# 编译器是否可以创建具有StackOverflowException的异步代码?_C#_Stack Overflow_Async Await_C# 5.0 - Fatal编程技术网

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是如何工作的,以及它的局限性是什么。但我仍然想知道为什么要问这个问题。你不是在问它是否是可重入的,你是在问它是否有缺陷。