浏览代码

Avoid using .Result in favor of await (cf. exception behavior).

Bart De Smet 7 年之前
父节点
当前提交
bfaaf0b39e

+ 1 - 1
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Except.cs

@@ -99,7 +99,7 @@ namespace System.Linq
                                 await Task.WhenAll(moveNextTask.AsTask(), _fillSetTask).ConfigureAwait(false);
 
                                 _setFilled = true;
-                                moveNext = moveNextTask.Result;
+                                moveNext = await moveNextTask.ConfigureAwait(false);
                             }
                             else
                             {

+ 1 - 1
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Intersect.cs

@@ -99,7 +99,7 @@ namespace System.Linq
                                 var moveNextTask = _firstEnumerator.MoveNextAsync();
                                 await Task.WhenAll(moveNextTask.AsTask(), _fillSetTask).ConfigureAwait(false);
                                 _setFilled = true;
-                                moveNext = moveNextTask.Result;
+                                moveNext = await moveNextTask.ConfigureAwait(false);
                             }
                             else
                             {

+ 2 - 2
Ix.NET/Source/System.Linq.Async/System/Linq/Operators/Zip.cs

@@ -99,7 +99,7 @@ namespace System.Linq
                         
                         await Task.WhenAll(ft.AsTask(), st.AsTask()).ConfigureAwait(false);
 
-                        if (ft.Result && st.Result)
+                        if (await ft.ConfigureAwait(false) && await st.ConfigureAwait(false))
                         {
                             current = _selector(_firstEnumerator.Current, _secondEnumerator.Current);
                             return true;
@@ -173,7 +173,7 @@ namespace System.Linq
                         var st = _secondEnumerator.MoveNextAsync();
                         await Task.WhenAll(ft.AsTask(), st.AsTask()).ConfigureAwait(false);
 
-                        if (ft.Result && st.Result)
+                        if (await ft.ConfigureAwait(false) && await st.ConfigureAwait(false))
                         {
                             current = await _selector(_firstEnumerator.Current, _secondEnumerator.Current).ConfigureAwait(false);
                             return true;