考虑:
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
C c = new C();
c.FooAsync(); // warning CS4014: Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the 'await' operator to the result of the call.
((I)c).FooAsync(); // No warning
}
}
class C : I
{
public async Task FooAsync()
{
}
}
interface I
{
Task FooAsync();
}
如果我直接在c
对象上调用异步方法,我会收到编译器警告。这里可能存在错误,所以我很高兴收到警告。
但是,如果我对接口方法进行相同的调用,我不会收到任何警告。在这段代码中很容易漏掉一个错误。
我怎样才能确保我不会犯这个错误?有什么模式可以用来保护自己吗?