抓住TimeOut例外

时间:2013-11-06 17:24:08

标签: c# windows-phone-8 timeoutexception

我正在开发一个wp8应用程序,我使用HttpClient执行PostAsync和GetAsync操作,我将超时设置为1秒:

private HttpClient client = new HttpClient();
client.Timeout = TimeSpan.FromMilliseconds(1000); 

我在Get和Post操作上有一个try catch块来捕获TimeOutExceptions:

try
{
    var response = await client.PostAsync(param1,param2);
}
catch (TimeoutException e)
{
    //do something
}

然而我的catch块没有捕获异常,我调试我的应用程序并观察throwen异常是一个TaskCanceledException,¿我怎么能找到正确的异常?,¿为什么TimeOutException被替换了?

最后,为避免混淆,我的实际超时时间为10秒,我只用1秒进行测试,如果超时超频,我需要向用户显示一条消息。

1 个答案:

答案 0 :(得分:1)

在HttpClicent PostAsync上,超时不会作为TimeoutException发送。它作为TaskCanceledException发送。

我所看到的文档并非100%明确,但您获得的行为是正确的行为。达到超时时,抛出TaskCanceledException。

This makes a little bit of sense if you look here | HttpClicent.Timeout Property

  

您还可以使用任务上的CancellationTokenSource为各个请求设置不同的超时。

相关问题