gpt4 book ai didi

c# - 在 C#、Xamarin Forms 中获取异步任务的结果

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:21 24 4
gpt4 key购买 nike

我有以下几行代码,它们使用异步方法检查设备是否已在数据库中注册。

if (CrossConnectivity.Current.IsConnected)
{
return await App._deviceService.GetDevice(id);
}

我原以为 await 会那样做 - 等待 GetDevice 完成然后返回它的值,但在调查时我认为如果我想获得调用的实际结果我需要使用回调所以我可以据此采取行动。

谁能告诉我这样做是否正确?下面是调用的异步任务

public async Task<bool> GetDevice(string deviceID)
{
string url = Resources.Urls.dev + Resources.DeviceApi.Get + "?id=" + deviceID;
HttpResponseMessage result;
result = await App.HttpClientInstance().GetAsync(url);

if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
return true;
}
return false;
}

最佳答案

不,实际使用 await调用这样定义的方法 ( Task<bool> ) 意味着调用者将“等待”返回值准备就绪,因此您的 return要么返回 truefalse基于 GetDevice 的结果打电话。

更新:我要澄清的是代码实际上并没有主动等待方法完成,因为那样会破坏 async/await 的目的。组合,但我的意思是 return语句将仅在方法实际完成后执行。而 HttpClient请求运行时,调用线程可以同时自由地执行其他任务,这是使用 async/await 的真正优势。 .

关于c# - 在 C#、Xamarin Forms 中获取异步任务的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48223352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com