gpt4 book ai didi

async-await - 配置等待的静态分析

转载 作者:行者123 更新时间:2023-12-04 02:55:36 24 4
gpt4 key购买 nike

我尝试实现静态分析来检查方法及其调用图是否需要 UI 或请求 (ASP.NET) 上下文。答案将决定方法主体中的await 语句中是否需要ConfigureAwait。

我的计划是使用Roslyn检查调用图中每个成员访问的符号,它们是否派生自System.Windows.UIElement类。这种方法有效吗?那么对于 ASP.NET 上下文呢?

最佳答案

任何此类静态分析都很难正确实现。您可以使用启发式方法(例如 UIElement),但最终可能会出现一些误报和/或漏报。

例如,FlowDocument 不是从 UIElement 派生的。您可以更改启发式方法来测试 DispatcherObject 派生类型,但这也将包括 Freezable,它可能需要也可能不需要上下文 - 您不能总是知道编译时。因此,在一般情况下,这肯定是误报(或否定)。

再举一个例子,将项目添加到作为数据绑定(bind)属性公开的集合中也需要上下文,即使该集合不是 UI 元素。

ASP.NET 中也存在类似问题。 HttpContext.Current 是显而易见的,但是隐式使用当前区域性的字符串格式化方法又如何呢? ASP.NET 方面也存在许多“陷阱”。

话虽如此,我确实认为这是一个好主意;只要确保有一种简单的方法来忽略误报和漏报即可。

关于async-await - 配置等待的静态分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28486869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com