Windows Phone 7 ждут внутри foreach C # 5.0 Async - PullRequest
1 голос
/ 30 декабря 2011

Я использую 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 есть ожидание, этот метод должен вернутьв первом ожидании, но при отладке я заметил, что когда код достигает ожидаемого, он переходит к «возвращаемому результату»

Я использовал async ctp раньше (не на Windows Phone) и сделал код, подобный этому,

Что в этом плохого?

РЕДАКТИРОВАТЬ: Это не ошибка / ошибка отладчика, поскольку удаленный вызов никогда не выполняется (у меня есть вход в систему).

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011

В этом нет ничего плохого. Опыт отладки в CTP далеко не совершенен. Это улучшено, но все еще не идеально, в VS 11 CTP.

Во время выполнения это должно привести к ожидаемым результатам (возвращая первый результат, который не равен нулю).

0 голосов
/ 31 декабря 2011

Проблема была внутренним исключением в AsyncCtp dll. Похоже, что отладчик классифицирует эти исключения как исключение первого шанса и решает не прерывать сеанс отладки. Выполнение кода выполняется нормально, но без выполнения веб-запроса (в данном случае), заставляя разработчика думать, что все в порядке.

Спасибо за помощь @ Рид.

...