浏览代码

Use ContinueWithState in SelectMany to save one allocation.

Daniel Weber 7 年之前
父节点
当前提交
8f2673c024
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      Rx.NET/Source/src/System.Reactive/Linq/Observable/SelectMany.cs

+ 2 - 2
Rx.NET/Source/src/System.Reactive/Linq/Observable/SelectMany.cs

@@ -597,7 +597,7 @@ namespace System.Reactive.Linq.ObservableImpl
                     //
                     // Separate method to avoid closure in synchronous completion case.
                     //
-                    task.ContinueWith(t => OnCompletedTask(value, t), _cancel.Token);
+                    task.ContinueWithState((t, tuple) => tuple.@this.OnCompletedTask(tuple.value, t), (@this: this, value), _cancel.Token);
                 }
 
                 private void OnCompletedTask(TSource value, Task<TCollection> task)
@@ -758,7 +758,7 @@ namespace System.Reactive.Linq.ObservableImpl
                     //
                     // Separate method to avoid closure in synchronous completion case.
                     //
-                    task.ContinueWith(t => OnCompletedTask(value, index, t), _cancel.Token);
+                    task.ContinueWithState((t, tuple) => tuple.@this.OnCompletedTask(tuple.value, tuple.index, t), (@this: this, value, index), _cancel.Token);
                 }
 
                 private void OnCompletedTask(TSource value, int index, Task<TCollection> task)