feat: add CancellationSource class attribute#185
Open
roflmuffin wants to merge 1 commit intoCat-Lips:mainfrom
Open
feat: add CancellationSource class attribute#185roflmuffin wants to merge 1 commit intoCat-Lips:mainfrom
roflmuffin wants to merge 1 commit intoCat-Lips:mainfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR adds a new
CancellationSourceclass attribute which adds an underlyingpublic CancellationTokenSource Ctsthat is automatically cancelled and disposed when the node is exiting the tree. The Cts is lazily initialised and re-created when the node re-enters the tree.I am also open to modifying this PR to use a partial property, i.e.
It seems unlikely that you would ever need more than one cancellation token source per Node, so I've gone with the class attribute approach. With that being said I can see the benefit of flexibility of being able to name the Cts whatever you want and with whatever accessibility level.
My main use case for this attribute is when I have a VFX node that may do some long running animations or tweens, and is killed early. This lets you just pass the
Cts.Tokeninto the tweening code and allow it to gracefully handle the disposal of the node.I'm not super experienced with source generators in general, so open to any feedback on this one.