我们最近将对象树状结构(大约 40 层深)的访问者之一转换为 async/await 模式,因为最里面的接受方法现在执行使用 async/await 的工作。
一切正常,除非在调用图中深处抛出异常,然后我们会遇到 StackOverflowExceptions。
我们当前的假设:看起来异常展开发生在单个线程上,并且我们遇到了 StackOverflowExceptions。这可以解释崩溃转储堆栈跟踪,该跟踪在调用堆栈上有异常抛出语句,然后向上一直向上,直到到达 StackOverflowException。 (而在正常流程期间,只有异步状态机和当前延续位于堆栈上,为此有足够的可用堆栈空间)
使用 async/await 是否会将 .NET 4.7.2 上的默认 .NET 应用程序中可能的堆栈“深度”减少到小于 100?有没有好的方法来克服这个问题呢?是否建议不要在 .NET 中编写异步/等待访问者?这种行为还有其他解释吗?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)