From 29250d854bc5ed417312671bfd54b85bb41a3343 Mon Sep 17 00:00:00 2001 From: Rutherther Date: Fri, 3 Feb 2023 18:55:28 +0100 Subject: [PATCH] feat: use custom dispose method for comms packet provider to prevent the DI disposing --- .../Models/Packets/CommsPacketProvider.cs | 9 ++++++++ .../ViewModels/PacketLogViewModel.cs | 23 +++++++++++++++---- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/PacketLogger/Models/Packets/CommsPacketProvider.cs b/src/PacketLogger/Models/Packets/CommsPacketProvider.cs index aa74e41..4879361 100644 --- a/src/PacketLogger/Models/Packets/CommsPacketProvider.cs +++ b/src/PacketLogger/Models/Packets/CommsPacketProvider.cs @@ -109,6 +109,15 @@ public class CommsPacketProvider : ReactiveObject, IPacketProvider /// public void Dispose() { + } + + /// + /// A dispose used instead of + /// to prevent the service provider disposing. + /// + public void CustomDispose() + { + _cleanUp.Dispose(); Packets.Dispose(); } } \ No newline at end of file diff --git a/src/PacketLogger/ViewModels/PacketLogViewModel.cs b/src/PacketLogger/ViewModels/PacketLogViewModel.cs index 26d329a..914ee58 100644 --- a/src/PacketLogger/ViewModels/PacketLogViewModel.cs +++ b/src/PacketLogger/ViewModels/PacketLogViewModel.cs @@ -64,13 +64,24 @@ public class PacketLogViewModel : ViewModelBase, IDisposable .Bind(out _packets) .ObserveOn(RxApp.MainThreadScheduler) .DisposeMany() - .Subscribe(_ => - { - if (Scroll) + .Subscribe + ( + _ => { - RxApp.MainThreadScheduler.Schedule(DateTimeOffset.Now.AddMilliseconds(100), () => SelectedPacket = FilteredPackets[^1]); + if (Scroll) + { + RxApp.MainThreadScheduler.Schedule + (DateTimeOffset.Now.AddMilliseconds(100), () => + { + if (FilteredPackets.Count > 0) + { + SelectedPacket = FilteredPackets[^1]; + } + } + ); + } } - }); + ); _cleanUp = packetsSubscription; CopyPackets = ReactiveCommand.CreateFromObservable @@ -229,6 +240,8 @@ public class PacketLogViewModel : ViewModelBase, IDisposable TogglePane.Dispose(); CopyPackets.Dispose(); Clear.Dispose(); + Provider.Dispose(); + (Provider as CommsPacketProvider)?.CustomDispose(); _cleanUp.Dispose(); SendFilter.Dispose(); -- 2.49.0