Fix: SnackbarPresenter might throw ObjectDisposedException, display problems. #1138
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pull request type
Please check the type of change your PR introduces:
What is the current behavior?
In a scenario where a
SnackbarPresenter
is utilized within a page that employs a singleton service and is treated as aNavigationViewItem
, switching between NavigationViewItems can repeatedly invoke theOnUnloaded
method. This sequence leads to theCancellationTokenSource
being disposed via itsDispose
method, followed by attempts to callCancel
method on the already-disposed object, consequently resulting in anObjectDisposedException
being thrown.During the process of displaying a
Snackbar
, if the user navigates to another page, theSnackbar
fails to dismiss properly.Issue Number: Snackbar Presenter throws an error when it is unloaded. #951
What is the new behavior?
The
CancellationTokenSource
will no longer be disposed within theOnUnloaded
method; rather, its disposal will be deferred to the class's finalizer. Additionally, invoking theOnUnloaded
method will promptly trigger the hiding of theSnackbar
.I'm unsure if there's a better approach to properly dispose the
CancellationTokenSource
, as relying on the finalizer could result in untimely disposal due to the inherent unpredictability of garbage collection.