Fix PictureBox frame callback handle race in OnFrameChanged - #14826
Open
LeafShi1 wants to merge 1 commit into
Open
Fix PictureBox frame callback handle race in OnFrameChanged#14826LeafShi1 wants to merge 1 commit into
LeafShi1 wants to merge 1 commit into
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR addresses an intermittent Win32Exception: Error creating window handle seen during PictureBox animated image frame callbacks by reducing handle-state race exposure in OnFrameChanged.
Changes:
- Reordered the conditional in
PictureBox.OnFrameChangedto checkIsHandleCreatedbefore evaluatingInvokeRequired, avoiding the more complexInvokeRequiredpath when there is no handle.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
SimonZhao888
approved these changes
Jul 30, 2026
Member
|
Looks good to me! |
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.
Fixes #14823
Root Cause
During animated image updates,
OnFrameChangedcould evaluateInvokeRequiredbefore checkingIsHandleCreated.In rare timing windows (handle create/destroy while animation callback is running), this can lead to unstable handle state and an occasional "Error creating window handle".
Proposed changes
PictureBox.OnFrameChanged, checkIsHandleCreatedfirst, thenInvokeRequired.This allows for an immediate short-circuit when the handle does not exist, avoiding the more complex
InvokeRequiredpath (which involves parent chain traversal, thread checks, and race conditions regarding handle state).It also ensures consistency with similar controls, such as
LabelandButtonBase, which likewise checkIsHandleCreatedfirst.Customer Impact
Regression?
Risk
Test methodology
Test environment(s)
Microsoft Reviewers: Open in CodeFlow