首页 > 解决方案 > 有没有办法找到未等待的任务?

问题描述

我进行了大规模的重构,并将数百个 Web API 方法从同步转换为异步。

问题是我现在有很多问题!主要是因为这些方法的每个调用者都应该在每次调用中使用 await 关键字。

编译器很有用,因为大多数情况下都可以检测到一个固定的观察编译器错误/警告,但是当编译器没有帮助时,也有一些沉默的情况。

例如,在这样的情况下:

public async Task<Item> Example()
{
    return new Item
    { 
        Property = GetName();
    };
}

private Task<string> GetName() 
{
    return Task.FromResult("Hello");
}

class Item 
{
    public object Property { get; set; }
}

请注意,该GetName方法没有等待,但编译器不会抱怨也不会发出任何警告,因为 Property 是类型object并且可以接受任何东西(包括 a Task

有没有办法检测到这种未等待的任务?也许是一个扩展或一个不错的技巧?

标签: c#.netasync-awaittask

解决方案


我找到了一个对我有帮助的扩展:

它在这里可用: 缺少等待警告

Git-Hub:https ://github.com/ykoksen/unused-task-warning


推荐阅读