Skip to content

Commit 292df67

Browse files
Added WeakEventManager
1 parent 0ac540a commit 292df67

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Extensions for `System.Threading.Tasks.Task`, inspired by [John Thiriet](https:/
88
- AsyncAwaitBestPractices
99
- An extension method to safely fire-and-forget a `Task`:
1010
- `SafeFireAndForget`
11+
- `WeakEventManager`
1112
- [Usage instructions below](#asyncawaitbestpractices)
1213
- AsyncAwaitBestPractices.MVVM
1314
- Allows for `Task` to safely be used asynchronously with `ICommand`:
@@ -60,6 +61,21 @@ async Task ExampleAsyncMethod()
6061
}
6162
```
6263

64+
An event implementation that enables the [garbage collector to collect an object without needing to unsubscribe event handlers](http://paulstovell.com/blog/weakevents):
65+
- `WeakEventManager`
66+
67+
```csharp
68+
readonly WeakEventManager _weakEventManager = new WeakEventManager();
69+
70+
public event EventHandler CanExecuteChanged
71+
{
72+
add => _weakEventManager.AddEventHandler(value);
73+
remove => _weakEventManager.RemoveEventHandler(value);
74+
}
75+
76+
public void RaiseCanExecuteChanged() => _weakEventManager.HandleEvent(this, EventArgs.Empty, nameof(CanExecuteChanged));
77+
```
78+
6379
### AsyncAwaitBestPractices.MVVM
6480

6581
Allows for `Task` to safely be used asynchronously with `ICommand`:

0 commit comments

Comments
 (0)