Thank you, that was what I needed. This can be turned into an operator as follows:
public static IObservable<TSource> OnSubscribe<TSource>(this IObservable<TSource> source, Action onSubscribe, Action onDispose) { return Observable .Create<TSource>(observer => { onSubscribe?.Invoke(); var subscription = source.Subscribe(observer); return () => { subscription.Dispose(); onDispose?.Invoke(); }; }); }
source share