【发布时间】:2019-11-21 06:52:15
【问题描述】:
我在我的应用程序中收到很多 CS1998 警告,我正在研究如何解决这些问题。
例如,我有一个具有方法签名Task<DataModel> GetData() 的 IDataService 接口。
然后我可以说一个RealDataService : IDataService 的实现,它可以对文件进行一些写入/读取,并且由于它使用异步 I/O 方法,因此它们使用await 调用,并且方法签名更改为async Task<DataModel> GetData()。
然后使用 var data = await _dataService.GetData(); 从 UI 调用它。到目前为止一切都很好。
但是我需要测试我的数据并创建数据接口MockupDataService : IDataService 的另一个实现,其中数据只是硬编码并且不执行异步操作。一切仍然正常运行,但那些讨厌的 CS1998 警告在构建应用程序时开始出现。
这个问题网上有很多解决办法:
- 禁用此类警告
- 使用
await Task.Yeild();的调用 - 使用 Task.From 结果 ->
return await Task.FromResult<DataModel>(new DataModel()); - 我想我见过更多,但现在想不起来了。
但是这些解决方案都没有比其他解决方案“更正确”,所以我想知道解决这个问题的正确方法是什么?我知道很多人对 C# 中的异步编程有更深入的了解,并且能够就这个问题提供一些见解/答案。
【问题讨论】:
-
模拟服务中的方法不需要是
async,去掉那个修饰符然后做return Task.FromResult<DataModel>(new DataModel());
标签: c# visual-studio asynchronous xamarin.forms async-await