1

我正在使用 C# 异步 CTP 调用一些返回 URI 的远程函数,我有以下代码:

 public async Task<Uri> GetUriAsync(string service, string endpoint)
    {


        Uri result = null;
        foreach (var service in _serviceProvider)
        {
            try
            {

                result = await service .GetAsync(service,endpoint);

                if (result != null)
                    return result;
            }
            catch (Exception)
            {

            }
        }

        return result;

    }

由于foreach内部有await,所以这个方法应该在第一个await中返回,但是通过调试我注意到当代码到达await时它会跳转到“return result”

我之前使用过 async ctp(不是在 windows phone 上)并完成了与此类似的代码。

那有什么问题呢?

编辑:这不是调试器错误/错误,因为远程调用从未完成(我在那里有一个日志)。

4

2 回答 2

2

没有什么不妥。CTP 中的调试体验远非完美。它在 VS 11 CTP 中得到了改进,但仍不完美。

在运行时,这应该会产生您期望的结果(返回第一个不为空的结果)。

于 2011-12-30T19:29:47.743 回答
0

问题是 AsyncCtp dll 的内部异常。调试器似乎将此异常归类为 First Chance 异常,并决定不中止调试会话。通过执行代码正常运行但不执行 Web 请求(在这种情况下),让开发人员认为一切正常。

感谢@Reed 的帮助。

于 2011-12-30T21:35:29.287 回答