【发布时间】:2018-04-17 04:23:40
【问题描述】:
我正在使用 NewtonSoft.Json 尝试解析从 C# 网站获得的 Json 响应。问题来了:
protected async override Task<bool> DoInBackground() {
var json = await GetJson();
return true;
}
GetJson() 负责从网站获取响应并返回作为 Json 响应的字符串。 DoInBackground() 是自定义 AsyncTask 类的一部分,该类在后台处理正在运行的任务。
上面的代码运行得很好。如果我在函数内的第一行放置一个断点,它会停在那里并允许我单步执行并检查下载的 Json 是否正确。
然而,下面的代码永远不会执行。一旦我从 Newtonsoft.Json 引用任何内容,函数就会停止执行。不会到达函数内部的断点。
protected async override Task<bool> DoInBackground() {
var json = await GetJson();
dynamic jsonObject = JObject.Parse(json);
return true;
}
我做错了什么?
编辑:我应该提到DoInBackground() 函数在其他不使用Newtonsoft.Json 的类中完美运行。这是我需要从服务器获取 Json 的第一类。
编辑:为了测试代码是否在没有遇到断点的情况下执行,我尝试了以下但没有输出。
protected async override Task<bool> DoInBackground() {
var json = await GetJson();
Debug.WriteLine("before");
dynamic jsonObject = JObject.Parse(json);
Debug.WriteLine("after");
return true;
}
【问题讨论】:
-
你有什么错误吗?
-
@YogeshHShenoy 没有错误。该函数根本不执行。
-
你希望你的函数返回什么?目前它正在返回布尔值,您希望它返回字符串吗?然后你需要改变函数的返回类型并从中返回适当的值
-
@ChetanRanpariya 返回值只是一个布尔值,表示
DoInBackground()是否成功执行。为什么断点不停止? -
@sjbhalli 在调用函数之前是否命中断点?
标签: c# xamarin dynamic json.net async-await