C# 5 中异步等待集成的新功能。我正在使用一些基于任务的基本方法来探索异步等待和 TPL。在下面的这个示例中,我正在调用一个超时为 5 秒的 Web 服务。如果超时到期,它应该抛出一个异常,以便我可以从该方法返回 false。但是,超时永远不会发生,或者它可能会发生但任务永远不会返回。
public static Task<bool> IsConnectedAsync()
{
return Task.Run(() =>
{
try
{
using (WSAppService.AppService svc = new NCSoftware.Common.WSAppService.AppService(GetServiceUrl(WebService.app)){Timeout = 5000})
{
return svc.PingB();
}
}
catch (Exception ex)
{
Logger.LogException(ex.Message, ex, "IsConnectedAsync");
}
return false;
});
}
如果您可以帮助如何正确处理此问题,以便如果发生超时甚至更好,则发生异常,任务确实返回。