Skip to content

Conversation

@manodasanW
Copy link
Member

There was an issue where the wrong vtable was being called when unsubscribing from events on non-agile objects because we were caching the add / remove handler vtable address at the point when the event was first added to. This meant for a non-agile object, if you go to a different context and tried to remove from that event, it wasn't calling the proxy vtable address but rather the actual vtable.

This addresses this by putting a fix in WinRT.Runtime such that we instead figure out the index of the vtable and cache that rather than caching add / remove handler. But given we need to do a loop through the vtable to fix this, this adds another fix for scenarios where the projections are regenerated with the newer CsWinRT version. In this fix, we are adding a new constructor to event source to allow passing the offset which is later then cached and used rather than passing the add / remove handlers from the original context.

@manodasanW manodasanW merged commit 9220900 into master Oct 15, 2025
12 checks passed
@manodasanW manodasanW deleted the manodasanw/eventCacheFix branch October 15, 2025 21:35
glennawatson pushed a commit to reactiveui/ReactiveUI that referenced this pull request Dec 14, 2025
…release.251115.2 (#4204)

This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
|
[Microsoft.Windows.CsWinRT](https://redirect.github.com/microsoft/cswinrt)
| `2.3.0-prerelease.251015.2` -> `2.3.0-prerelease.251115.2` |
![age](https://developer.mend.io/api/mc/badges/age/nuget/Microsoft.Windows.CsWinRT/2.3.0-prerelease.251115.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/Microsoft.Windows.CsWinRT/2.3.0-prerelease.251015.2/2.3.0-prerelease.251115.2?slim=true)
|

---

### Release Notes

<details>
<summary>microsoft/cswinrt (Microsoft.Windows.CsWinRT)</summary>

###
[`v2.3.0-prerelease.251115.2`](https://redirect.github.com/microsoft/CsWinRT/releases/tag/2.3.0-prerelease.251115.2):
CsWinRT 2.3.0-prerelease.251115.2

This is a prerelease version of C#/WinRT with more bug fixes and
improvements.

**C#/WinRT package**:

<https://www.nuget.org/packages/Microsoft.Windows.CsWinRT/2.3.0-prerelease.251115.2>

#### What's Changed

- Fix warning by
[@&#8203;manodasanW](https://redirect.github.com/manodasanW) in
[microsoft/CsWinRT#2023](https://redirect.github.com/microsoft/CsWinRT/pull/2023)
- Use FormatMessage for exception messages in cases where the
stowed/language exception doesn't contain a message by
[@&#8203;ahmed605](https://redirect.github.com/ahmed605) in
[microsoft/CsWinRT#2022](https://redirect.github.com/microsoft/CsWinRT/pull/2022)
- Merge to staging/2.3 by
[@&#8203;manodasanW](https://redirect.github.com/manodasanW) in
[microsoft/CsWinRT#2025](https://redirect.github.com/microsoft/CsWinRT/pull/2025)
- Merge staging/2.3 to master by
[@&#8203;manodasanW](https://redirect.github.com/manodasanW) in
[microsoft/CsWinRT#2030](https://redirect.github.com/microsoft/CsWinRT/pull/2030)
- Fix 'Initialize' typo in several files by
[@&#8203;Lightczx](https://redirect.github.com/Lightczx) in
[microsoft/CsWinRT#2035](https://redirect.github.com/microsoft/CsWinRT/pull/2035)
- Fix design time build error causing incremental build issue by
[@&#8203;manodasanW](https://redirect.github.com/manodasanW) in
[microsoft/CsWinRT#2036](https://redirect.github.com/microsoft/CsWinRT/pull/2036)
- Move TestWinRT repo clone to resource by
[@&#8203;manodasanW](https://redirect.github.com/manodasanW) in
[microsoft/CsWinRT#2032](https://redirect.github.com/microsoft/CsWinRT/pull/2032)
- Fix weak reference rehydration scenarios for non projected types by
[@&#8203;manodasanW](https://redirect.github.com/manodasanW) in
[microsoft/CsWinRT#2043](https://redirect.github.com/microsoft/CsWinRT/pull/2043)
- Add UpToDateCheckBuilt to cover incremental build of Implementation
dlls by [@&#8203;jevansaks](https://redirect.github.com/jevansaks) in
[microsoft/CsWinRT#2051](https://redirect.github.com/microsoft/CsWinRT/pull/2051)
- Fix issue where IReferenceArray is not being found by
[@&#8203;manodasanW](https://redirect.github.com/manodasanW) in
[microsoft/CsWinRT#2071](https://redirect.github.com/microsoft/CsWinRT/pull/2071)
- Fix issue with unsubscribing from events on non-agile objects by
[@&#8203;manodasanW](https://redirect.github.com/manodasanW) in
[microsoft/CsWinRT#2079](https://redirect.github.com/microsoft/CsWinRT/pull/2079)
- Fix issues with CopyToManagedArray by
[@&#8203;manodasanW](https://redirect.github.com/manodasanW) in
[microsoft/CsWinRT#2084](https://redirect.github.com/microsoft/CsWinRT/pull/2084)

#### New Contributors

- [@&#8203;ahmed605](https://redirect.github.com/ahmed605) made their
first contribution in
[microsoft/CsWinRT#2022](https://redirect.github.com/microsoft/CsWinRT/pull/2022)
- [@&#8203;Lightczx](https://redirect.github.com/Lightczx) made their
first contribution in
[microsoft/CsWinRT#2035](https://redirect.github.com/microsoft/CsWinRT/pull/2035)

**Full Changelog**:
<microsoft/CsWinRT@2.3.0-prerelease.250720.1...2.3.0-prerelease.251115.2>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/reactiveui/ReactiveUI).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi4xNi4xIiwidXBkYXRlZEluVmVyIjoiNDIuMzIuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiRGVwZW5kZW5jeSBNYW5hZ2VtZW50Il19-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants