~ruther/NosTale-PacketLogger

29250d854bc5ed417312671bfd54b85bb41a3343 — Rutherther 2 years ago edbaaa6
feat: use custom dispose method for comms packet provider to prevent the DI disposing
M src/PacketLogger/Models/Packets/CommsPacketProvider.cs => src/PacketLogger/Models/Packets/CommsPacketProvider.cs +9 -0
@@ 109,6 109,15 @@ public class CommsPacketProvider : ReactiveObject, IPacketProvider
    /// <inheritdoc />
    public void Dispose()
    {
    }

    /// <summary>
    /// A dispose used instead of <see cref="Dispose"/>
    /// to prevent the service provider disposing.
    /// </summary>
    public void CustomDispose()
    {
        _cleanUp.Dispose();
        Packets.Dispose();
    }
}
\ No newline at end of file

M src/PacketLogger/ViewModels/PacketLogViewModel.cs => src/PacketLogger/ViewModels/PacketLogViewModel.cs +18 -5
@@ 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<IList, Unit>


@@ 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();

Do not follow this link