File tree Expand file tree Collapse file tree 1 file changed +12
-8
lines changed
Rx.NET/Source/src/System.Reactive/Internal Expand file tree Collapse file tree 1 file changed +12
-8
lines changed Original file line number Diff line number Diff line change @@ -38,31 +38,35 @@ public IDisposable Subscribe(IObserver<TSource> observer)
3838
3939 public IDisposable SubscribeRaw ( IObserver < TSource > observer , bool enableSafeguard )
4040 {
41- var subscription = new SingleAssignmentDisposable ( ) ;
41+ IDisposable run ;
42+ ISafeObserver < TSource > safeObserver = null ;
4243
4344 //
4445 // See AutoDetachObserver.cs for more information on the safeguarding requirement and
4546 // its implementation aspects.
4647 //
4748 if ( enableSafeguard )
4849 {
49- var safeObserver = SafeObserver < TSource > . Wrap ( observer ) ;
50- safeObserver . SetResource ( subscription ) ;
51- observer = safeObserver ;
50+ observer = safeObserver = SafeObserver < TSource > . Wrap ( observer ) ;
5251 }
5352
5453 if ( CurrentThreadScheduler . IsScheduleRequired )
5554 {
55+ var runAssignable = new SingleAssignmentDisposable ( ) ;
56+
5657 CurrentThreadScheduler . Instance . ScheduleAction (
57- ( @this : this , subscription , observer ) ,
58- tuple => tuple . subscription . Disposable = tuple . @this . Run ( tuple . observer ) ) ;
58+ ( @this : this , runAssignable , observer ) ,
59+ tuple => tuple . runAssignable . Disposable = tuple . @this . Run ( tuple . observer ) ) ;
60+
61+ run = runAssignable ;
5962 }
6063 else
6164 {
62- subscription . Disposable = Run ( observer ) ;
65+ run = Run ( observer ) ;
6366 }
6467
65- return subscription ;
68+ safeObserver ? . SetResource ( run ) ;
69+ return run ;
6670 }
6771
6872 /// <summary>
You can’t perform that action at this time.
0 commit comments