2016-12-13 97 views
6

看起來像弱事件或更具體地說WeakEventManagerIWeakEventListener不在.Net核心中可用,因爲它們是WindowsBase程序集的一部分。使用.NetCore中的弱事件

有沒有這個功能的替代品?

事件通常是應用程序中內存泄漏的來源,而弱引用是處理此問題的好方法。

我無法找到計算器關於這個主題的信息

+2

直接使用'WeakReference'。 – SLaks

+0

@SLaks你可以善意地演示和使用WeakReference的例子或者指向我的例子,無論哪種方式,我會讓你的答案是正確的答案。 –

回答

4

圖書館Nito.Mvvm.CoreWeakCanExecuteChagned的類,它使用,你可以作爲一個起點使用命令類弱事件寫你的經理由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); 
      } 
     } 
    } 
} 
+0

很好的答案,希望我可以投兩次,謝謝 –