我在我的应用程序中收到了很多CS1998警告,我正在寻找如何解决它们。
例如,我有一个IDataService接口,它有一个方法签名Task<DataModel> GetData()
。
然后,我有一个实现RealDataService : IDataService
,它执行一些文件的写入/读取操作,并且由于它使用异步I/O方法,它们被调用时带上await
,并且方法签名被更改为async Task<DataModel> GetData()
。
然后,从UI中使用var data = await _dataService.GetData();
进行调用。到这里都很好。
但是,我需要测试我的数据,因此我创建了另一个数据接口的实现MockupDataService : IDataService
,其中数据仅为硬编码,没有执行任何异步操作。一切仍然按预期工作,但是在构建应用程序时会出现那些讨厌的CS1998警告。
在线上可以找到很多解决此问题的方法:
- 禁用此类警告
- 使用调用
await Task.Yeild();
- 使用Task.From结果 ->
return await Task.FromResult<DataModel>(new DataModel());
- 我记得我看到过更多,但现在想不起来了。
但是,这些解决方案中没有一个比其他解决方案更“正确”,因此我想知道正确的解决方法是什么?我知道很多人对C#中的异步编程有更深入的了解,并且能够提供一些关于此问题的见解/答案。
async
,移除该修饰符,并使用return Task.FromResult<DataModel>(new DataModel());
返回。 - undefined