有什么办法可以找到未等待的任务?

时间:2019-10-24 22:25:59

标签: c# .net async-await task

我已经进行了巨大的重构,并且将数百种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,并且可以接受任何内容(并且包括Task

有什么方法可以检测到这种未等待的任务?也许是扩展程序还是不错的技巧?

1 个答案:

答案 0 :(得分:0)

我找到了绝对可以帮助我的扩展程序:

在这里可用: Missing await warning

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