2016-12-13 17 views
6

弱いイベント、より具体的にはWeakEventManagerまたはIWeakEventListenerは、WindowsBaseアセンブリの一部である.Net Coreでは使用できません。.NetCoreで弱いイベントを使用する

この機能の代替手段はありますか?

イベントはアプリケーションでメモリリークの原因となることが多く、弱い参照はこの問題を処理する優れた方法です。

私は図書館Nito.Mvvm.CoreあなたがWeakCollection<EventHandler>に裏打ちされた上司を書き込むための出発点として使用できるコマンドクラスを使用して、弱いイベントを行いWeakCanExecuteChagnedクラスを持つstackoverflowの

+2

「WeakReference」を直接使用してください。 – SLaks

+0

@SLaks WeakReferenceを使って説明したり、例を挙げたりすることができますか、あなたの答えを正しい答えにしてください。 –

答えて

4

にこのトピック上の任意の情報を見つけることができませんでした。

FooEventArgsオブジェクトを取り込むイベントFooのカスタムクラスを使用した簡単な例を次に示します。

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

すばらしい答え、私は2回投票することができれば幸いです –

関連する問題