public void Subscribe(Observable <T> observable)
        {
            //lock (SyncObject)
            //{
            if (observable == null || observable.IsDisposed || this.IsDisposed)
            {
                return;
            }
            Unsubscriber <T> unsub = observable.Subscribe(this) as Unsubscriber <T>;

            if (unsub != null)
            {
                m_DictObservables.TryAdd(observable, unsub);
            }
            // }
        }
        public void Subscribe(Observable <T> observable)
        {
            if (observable == null || observable.IsDisposed || this.IsDisposed)
            {
                return;
            }
            if (m_DictObservables.Count == 0)
            {
                MessageQueue.ResetStart();
            }
            Unsubscriber <T> unsub = observable.Subscribe(this) as Unsubscriber <T>;

            if (unsub != null)
            {
                m_DictObservables.TryAdd(observable, unsub);
            }
        }
 protected override void CleanupUnmanagedResources()
 {
     base.CleanupUnmanagedResources();
     m_Unsubscriber = null;
 }