| 
                 分類:[C/C++] 
 
 WeakEventパターンで疑問があります。
検索するとWeakEventManagerのCurrentManagerの実装に
static FooEventManager CurrentManager
{
  get
  {
    Type managerType = typeof(FooEventManager);
    FooEventManager manager = (FooEventManager)
WeakEventManager.GetCurrentManager(managerType);
    if (manager == null)
    {
      manager = new FooEventManager();
      WeakEventManager.SetCurrentManager(managerType, manager);
    }
    return manager;
  }
}
というサンプルが見つかりましたが
複数スレッドからCurrentManagerにアクセスする可能性を考えると
static FooEventManager()
{
  WeakEventManager.SetCurrentManager(typeof(FooEventManager), new 
FooEventManager());
}
static FooEventManager CurrentManager
{
  get { return (FooEventManager)WeakEventManager.GetCurrentManager(typeof
(FooEventManager)); }
}
とした方が適切ではないでしょうか?
あと、RemoveListenerを呼ばなかった場合、Managerに登録された情報は削除されずに
アプリケーションが終了するまで残ってしまうのでしょうか?
必ずRemoveListenerすべきでしょうか?
RemoveListenerについての御意見お願いします
  |