xamarin android异步方法不起作用

时间:2016-04-18 14:19:50

标签: c# android asynchronous xamarin async-await

我的便携式课程有一个静态方法

async public static Task<JSONObject> CheckToken(string token)
{
    var client = new HttpClient();
    var formContent = new FormUrlEncodedContent(new[]
   {
        new KeyValuePair<string, string>("tag", "checkToken"),
        new KeyValuePair<string, string>("token", token)
    });
    var response = await client.PostAsync("http://10.0.0.6:888/api.php",     formContent);
    string res = await response.Content.ReadAsStringAsync();
    return new JSONObject(res);
}

主要活动代码

protected override async void OnCreate (Bundle bundle)
{
    FacebookSdk.SdkInitialize(this);

    LoginManager.Instance.LogOut();

    base.OnCreate(bundle);
    var tracker = new myTokenT(this);
    tracker.StartTracking();

    ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(this);
    var token = prefs.GetString("token","notoken");
    var res = await Client.CheckToken(token); // stop here
......
}

到达时

 var response = await client.PostAsync("http://10.0.0.6:888/api.php",     formContent);

获取异常System.Threading.Tasks.TaskCanceledException:任务被取消。

它停止..就像我等待3分钟然后我得到例外, 有趣的是它以前工作过!我不知道为什么会这样。

1 个答案:

答案 0 :(得分:0)

  • 假设在该服务器上启用了ICMP,请使用Android的adb来测试从设备/模拟器到该服务器的访问权限:

    adb shell ping 10.0.0.6

  • 假设您在该Web服务器上有某种类型的开放访问测试/状态网页,您可以从设备/模拟器的Web浏览器浏览该服务器吗?