它看起来像弱事件或更具体WeakEventManager
或IWeakEventListener
在.Net Core中不可用,因为它们是WindowsBase程序集的一部分.
有这个功能的替代品吗?
事件通常是应用程序中内存泄漏的来源,而弱引用是处理此问题的好方法.
我在stackoverflow中找不到关于此主题的任何信息
库Nito.Mvvm.Core有一个WeakCanExecuteChagned
类,它使用命令类来执行弱事件,您可以将其用作编写由a支持的经理的起点WeakCollection<EventHandler>
.
下面是一个使用自定义类的简单示例,该类具有一个Foo
接收FooEventArgs
对象的事件.
public class MyClass
{
private readonly WeakCollection<EventHandler<FooEventArgs>> _foo = new WeakCollection<EventHandler<FooEventArgs>>();
public event EventHandler<FooEventArgs> Foo
{
add
{
lock (_foo)
{
_foo.Add(value);
}
}
remove
{
lock (_foo)
{
_foo.Remove(value);
}
}
}
protected virtual void OnFoo(FooEventArgs args)
{
lock (_foo)
{
foreach (var foo in _foo.GetLiveItems())
{
foo(this, args);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1215 次 |
最近记录: |