1

C# async 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 に到達すると「結果を返す」にジャンプすることに気付きました。

私は以前に(Windows Phoneではなく)async ctpを使用し、これに似たコードを実行しました。

それの何が悪いのですか?

編集: リモート呼び出しが行われないため、これはデバッガーのエラー/バグではありません (私はそこにログインしています)。

4

2 に答える 2

2

それは何も悪いことではありません。CTP でのデバッグ エクスペリエンスは、完璧とはほど遠いものです。VS 11 CTP では改善されましたが、まだ完全ではありません。

実行時に、これにより期待どおりの結果が生成されます (null ではない最初の結果が返されます)。

于 2011-12-30T19:29:47.743 に答える
0

問題は、AsyncCtp dll での内部例外でした。デバッガーがこの例外を First Chance 例外として分類し、デバッグ セッションを中止しないことを決定したようです。コードは正常に実行されますが、(この場合は) Web 要求は実行されずに、開発者はすべて問題ないと考えるようになります。

助けてくれてありがとう@Reed。

于 2011-12-30T21:35:29.287 に答える