我已经进行了巨大的重构,并且将数百种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
)
有什么方法可以检测到这种未等待的任务?也许是扩展程序还是不错的技巧?