فهرست منبع

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.
                     // 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)
                 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.
                     // 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)
                 private void OnCompletedTask(TSource value, int index, Task<TCollection> task)