Xamarin无法访问已处置对象错误
本文关键字:对象 错误 访问 Xamarin | 更新日期: 2023-09-27 18:07:42
我使用下面的代码从我的Xamarin跨平台项目的端点读取JSON,我得到错误无法读取被处置对象异常或触发ObjectDisposedException
代码有问题吗?我可以用更好的方式写吗?
public async Task<APISchoolDetailModel> GetSchooDetailsAsync()
{
APISchoolDetailModel api_data = new APISchoolDetailModel();
try
{
var client = new System.Net.Http.HttpClient();
client.DefaultRequestHeaders.Add("Accept", "application/json");
var web_client = await client.GetAsync("http://appapitest.net/APIs/Student/Schooldetails");
var response_string= web_client.Content.ReadAsStringAsync().Result;
DataContractJsonSerializer serializer = new DataContractJsonSerializer(api_data.GetType());
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(response_string));
api_data = serializer.ReadObject(ms) as APISchoolDetailModel;
}
catch (Exception ex) { }
return api_data;
}
控制器一直到var web_client = await client行。GetAsync("然后它不会继续,几秒钟后,我得到异常
是否有更好的方法来编写读取和解析JSON的代码
@Gserg指出一些重要的事情你不应该这样做:
var response_string= web_client.Content.ReadAsStringAsync().Result;
而不是使用:
var response_string= await web_client.Content.ReadAsStringAsync();
:
这可能会导致线程内的死锁或您正在遇到的相同问题,因为线程可能试图更新或使用已经从GC收集的变量。