Den*_*tez 0 c# asynchronous visual-studio async-await xamarin.forms
我在我的应用程序中收到很多 CS1998 警告,我正在寻找如何在我的情况下解决它们。
例如,我有一个 IDataService 接口,它有一个方法签名Task<DataModel> GetData()。
然后我可以说一个实现对RealDataService : IDataService文件进行一些写入/读取,并且由于它使用异步 I/O 方法来调用它们await并且方法签名更改为async Task<DataModel> GetData().
然后使用var data = await _dataService.GetData();. 到目前为止,一切都很好。
但后来我需要测试我的数据,我创建了数据接口的另一个实现,MockupDataService : IDataService其中数据只是硬编码并且不执行异步操作。一切仍然正常运行,但是在构建应用程序时,那些讨厌的 CS1998 警告开始出现。
这个问题网上有很多解决方法:
await Task.Yeild();return await Task.FromResult<DataModel>(new DataModel());但是这些解决方案都没有比其他解决方案“更正确”,所以我想知道解决这个问题的正确方法是什么?我知道很多人对 C# 中的异步编程有更深入的了解,并且能够就这个问题提供一些见解/答案。
如果没有await,请删除async关键字。async不会使方法异步。它不是方法签名的一部分。它只是一种语法糖,允许使用await来等待一个已经在执行的异步操作而不会阻塞。
在您的测试方法中创建一个已经完成的任务Task.FromResult并按原样返回:
public Task<DataModel> GetData()
{
var model=new DataModel();
//Add some test data
return Task.FromResult(model);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1207 次 |
| 最近记录: |