public void OnEvent(object sender, WeakEvent ev, PropertyChangedEventArgs e)
 {
     if (e.PropertyName == _property.Name || string.IsNullOrEmpty(e.PropertyName))
     {
         SendCurrentValue();
     }
 }
Esempio n. 2
0
        public void When_registering_typed_weak_event_then_it_should_still_be_here_when_target_referenced()
        {
            //// Arrange
            var eventCalled = false;
            var target      = new MockEventTargetClass(() =>
            {
                eventCalled = true;
            });
            var obj = new MockObservableObject();

            //// Act
            WeakEvent.RegisterEvent <MockEventTargetClass, PropertyChangedEventHandler, PropertyChangedEventArgs>(
                target,
                h => obj.PropertyChanged += h,
                h => obj.PropertyChanged -= h,
                h => (o, e) => h(o, e),
                (t, sender, args) => t.Callback(sender, args));

            obj.Name = "test1";
            Assert.IsTrue(eventCalled);

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();

            eventCalled = false;
            obj.Name    = "test2";

            //// Assert
            Assert.IsTrue(eventCalled);
            target.Action = null;
        }
 public void OnEvent(object?sender, WeakEvent ev, NotifyCollectionChangedEventArgs args)
 {
     if (ShouldNotifyListeners(args))
     {
         SendCurrentValue();
     }
 }
Esempio n. 4
0
        public void When_registering_weak_event_then_it_should_still_be_here_when_target_referenced()
        {
            //// Arrange
            var eventCalled = false;
            var target      = new MockEventTargetClass(() =>
            {
                eventCalled = true;
            });
            var obj = new MockObservableObject();

            //// Act
            WeakEvent.RegisterEvent <MockObservableObject, PropertyChangedEventArgs>(obj, "PropertyChanged", target.Callback);

            obj.Name = "test1";
            Assert.IsTrue(eventCalled);

            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();

            eventCalled = false;
            obj.Name    = "test2";

            //// Assert
            Assert.IsTrue(eventCalled);
            target.Action = null;
        }
Esempio n. 5
0
        public BrowserControl()
        {
            InitializeComponent();
            if (DesignTimeProperty.InDesignMode)
            {
                return;
            }
            _mouseClickEvent     = new WeakEvent <MouseButtonEventHandler>();
            MouseLeftButtonDown += OnMouseLeftButtonDown;
            MouseLeftButtonUp   += OnMouseLeftButtonUp;
            MouseMove           += OnMouseMove;
            LostMouseCapture    += OnLostMouseCapture;
            MouseWheel          += OnMouseWheel;
            SizeChanged         += (sender, args) =>
            {
                if (ScaleOnResize)
                {
                    ScaleInCenter();
                }
            };

            //_popup = new Popup();
            //IsManipulationEnabled = true;
            //ManipulationDelta += OnManipulationDelta;

            _scaleFactor = 0;
            _instruments = new List <IInstrument>();
            UpdateScale();

            ZoomInCommand     = new RelayCommand(() => ZoomIn());
            ZoomOutCommand    = new RelayCommand(() => ZoomOut());
            ZoomCenterCommand = new RelayCommand(() => ScaleInCenter());
        }
Esempio n. 6
0
        public OrientationTrigger()
        {
            var win = Window.Current;

            WeakEvent.Subscribe <WindowSizeChangedEventHandler>(win, nameof(win.SizeChanged), Window_SizeChanged);
            CalculateState();
        }
Esempio n. 7
0
        public MiniWebServer(Uri BaseURL)
        {
            this.IdleTimeout    = true;
            this.KeepAliveTimer = new LifeTimeMonitor();
            this.SessionTimer   = new LifeTimeMonitor();
            this.SessionTable   = new Hashtable();
            this.OnSessionEvent = new WeakEvent();
            this.OnReceiveEvent = new WeakEvent();
            this.OnHeaderEvent  = new WeakEvent();
            InstanceTracker.Add(this);
            this.SessionTimer.OnExpired   += new LifeTimeMonitor.LifeTimeHandler(this.SessionTimerSink);
            this.KeepAliveTimer.OnExpired += new LifeTimeMonitor.LifeTimeHandler(this.KeepAliveSink);
            string host = BaseURL.Host;

            if (BaseURL.HostNameType == UriHostNameType.Dns)
            {
                throw new MiniWebServerException("Uri must explicitly define IP Address");
            }
            IPEndPoint localEP = new IPEndPoint(IPAddress.Parse(host), BaseURL.Port);

            this.endpoint_local = localEP;
            this.MainSocket     = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            this.MainSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
            this.MainSocket.Bind(localEP);
            this.MainSocket.Listen(0x19);
            this.MainSocket.BeginAccept(new AsyncCallback(this.Accept), null);
            this.KeepAliveTimer.Add(false, 7);
        }
Esempio n. 8
0
 public Subscription(WeakEvent <TSender, TEventArgs> ev, TSender target)
 {
     _ev          = ev;
     _target      = target;
     _compact     = Compact;
     _unsubscribe = ev._subscribe(target, OnEvent);
 }
Esempio n. 9
0
        public static void TestWeakEvent()
        {
            object             a          = new object();
            bool               w1Executed = false;
            int                val        = 0;
            WeakCallback <int> w1         = new WeakCallback <object, int>(a, (A, i) => { w1Executed = true; val = i; });

            w1.Execute(1);
            Assert.True(w1Executed);
            Assert.AreEqual(1, val);
            w1Executed = false;
            a          = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();
            w1.Execute(2);
            Assert.AreEqual(1, val);
            Assert.False(w1Executed);

            object             b          = new object();
            bool               w2Executed = false;
            WeakCallback <int> w2         = new WeakCallback <object, int>(b, (A, i) => { w2Executed = true; val = i; });

            WeakEvent <int> e = new WeakEvent <int>();

            e.Register(w1);
            e.Register(w2);
            e.Execute(3);
            Assert.True(w2Executed);
        }
Esempio n. 10
0
        public NetworkInfo(InterfaceHandler onNewInterfaceSink)
        {
            this.OnNewInterfaceEvent      = new WeakEvent();
            this.OnInterfaceDisabledEvent = new WeakEvent();
            this.InterfacePoller          = new LifeTimeMonitor();
            this.AddressTable             = new ArrayList();
            InstanceTracker.Add(this);
            this.InterfacePoller.OnExpired += new LifeTimeMonitor.LifeTimeHandler(this.PollInterface);
            this.HostName = Dns.GetHostName();
            IPHostEntry hostByName = Dns.GetHostByName(this.HostName);

            this.AddressTable = new ArrayList(hostByName.AddressList);
            if (!this.AddressTable.Contains(IPAddress.Loopback))
            {
                this.AddressTable.Add(IPAddress.Loopback);
            }
            if (onNewInterfaceSink != null)
            {
                this.OnNewInterface += onNewInterfaceSink;
                foreach (IPAddress address in this.AddressTable)
                {
                    this.OnNewInterfaceEvent.Fire(this, address);
                }
            }
            this.InterfacePoller.Add(this, NetworkPollSeconds);
        }
Esempio n. 11
0
        public DispatchOnSet(int senderID)
        {
            Console.LogWarningDebug("This method is obsolete and shouldn't be used anymore");

            _senderID    = new EGID(senderID, OBSOLETE_GROUP);
            _subscribers = new WeakEvent <EGID, T>();
        }
Esempio n. 12
0
 void IWeakEventSubscriber <AvaloniaPropertyChangedEventArgs> .
 OnEvent(object?notifyPropertyChanged, WeakEvent ev, AvaloniaPropertyChangedEventArgs e)
 {
     if (e.Property == _property)
     {
         SendCurrentValue();
     }
 }
Esempio n. 13
0
 void Add <TEventArgs>(WeakEvent <EventHandler <TEventArgs>, TEventArgs> weakEvent, EventHandler <TEventArgs> eventHandler) where TEventArgs : EventArgs
 {
     if (!viewModel.IsAlive)
     {
         return;
     }
     weakEvent.Add(eventHandler);
 }
Esempio n. 14
0
 void IWeakEventSubscriber <PropertyChangedEventArgs> .
 OnEvent(object?notifyPropertyChanged, WeakEvent ev, PropertyChangedEventArgs e)
 {
     if (e.PropertyName == _property.Name || string.IsNullOrEmpty(e.PropertyName))
     {
         _eventRaised = true;
         SendCurrentValue();
     }
 }
Esempio n. 15
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="action"></param>
 /// <param name="condition"></param>
 public AsyncRelayCommand(Func <object, Task> action, Predicate <object> condition = null)
 {
     this.action     = new WeakDelegate <Func <object, Task> >(action);
     this.condition  = null != condition ? new WeakPredicate <object>(condition) : null;
     access          = new AsyncReaderWriterLock();
     executeChanged  = new WeakEventHandler();
     complete        = new WeakEvent <TypedEventHandler <IAsyncCommand, CommandCompleteEventArgs> >();
     propertyChanged = new WeakEvent <PropertyChangedEventHandler>();
 }
Esempio n. 16
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="OrientationStateTrigger" /> class.
 /// </summary>
 public OrientationStateTrigger()
 {
     if (!DesignMode.DesignModeEnabled)
     {
         WeakEvent.Subscribe <TypedEventHandler <DisplayInformation, object> >(
             DisplayInformation.GetForCurrentView(), "OrientationChanged",
             OrientationStateTrigger_OrientationChanged);
     }
 }
Esempio n. 17
0
        /// <summary>
        /// Initializes a new instance of the RelayCommand class.
        /// </summary>
        /// <param name="execute">The execution logic.</param>
        /// <param name="canExecute">The execution status logic.</param>
        /// <exception cref="ArgumentNullException">If the execute argument is null.</exception>
        public RelayCommand(Action execute, Func<bool> canExecute)
        {
            if (execute == null)
            {
                throw new ArgumentNullException(nameof(execute));
            }

            _execute = execute;
            _canExecute = canExecute;
            _canExecuteChanged = new WeakEvent<EventHandler>();
        }
Esempio n. 18
0
        public void FiresForEachListener()
        {
            WeakEvent<EventHandler<EventArgs1>> handler = new WeakEvent<EventHandler<EventArgs1>>();

            handler.Add(EventReceiver1.Callback);
            handler.Add(EventReceiver1.Callback);

            handler.Raise(null, null);

            Assert.That(EventReceiver1.CallCounter, Is.EqualTo(2));
        }
        /// <summary>
        /// Initializes a new <see cref="OrientationTrigger"/> instance.
        /// </summary>
        public OrientationTrigger()
        {
            // Get application main window
            var win = Window.Current;

            // Create a weak subscription to the SizeChanged event so that we don't pin the trigger or page in memory
            WeakEvent.Subscribe <WindowSizeChangedEventHandler>(win, nameof(win.SizeChanged), Window_SizeChanged);

            // Calculate the initial state
            CalculateState();
        }
Esempio n. 20
0
        public void Test_WeakBindEvent_NormalProperty()
        {
            var viewModel       = new TestViewModel();
            var view            = new TestView();
            var propertyBinding = new WeakPropertyBinding(view, "Text1", viewModel, "Name")
                                  .Initialize <WeakPropertyBinding>();

            var weakEvent = new WeakEvent(viewModel);

            Assert.IsFalse(weakEvent.IsAttached);
        }
Esempio n. 21
0
 public SafeTimer()
 {
     this.ElapsedWeakEvent = new WeakEvent();
     this.Interval         = 0;
     this.AutoReset        = false;
     this.mre      = new ManualResetEvent(false);
     this.RegLock  = new object();
     this.WaitFlag = false;
     this.timeout  = 0;
     this.WOTcb    = new WaitOrTimerCallback(this.HandleTimer);
     InstanceTracker.Add(this);
 }
Esempio n. 22
0
        public void ShouldForwardArgs()
        {
            var handler = new WeakEvent<EventHandler<EventArgs1>>();

            handler.Add(EventReceiver1.Callback);

            var args = new EventArgs1(2);

            handler.Raise(null, args);

            Assert.That(EventReceiver1.Args, Is.EqualTo(args));
        }
Esempio n. 23
0
        public void ForwardsArgsWhenRaising()
        {
            WeakEvent<EventHandler<EventArgs1>> handler = new WeakEvent<EventHandler<EventArgs1>>();

            handler.Add(EventReceiver1.Callback);

            EventArgs1 args = new EventArgs1(2);

            handler.Raise(null, args);

            Assert.That(EventReceiver1.Args, Is.EqualTo(args));
        }
Esempio n. 24
0
        private void TrackCollection()
        {
            if (Items is ObservableCollection <T> )
            {
                var collection = (ObservableCollection <T>)Items;

                itemsChangedHandler = WeakEvent.Set <ObservableView <T>, NotifyCollectionChangedEventHandler, NotifyCollectionChangedEventArgs>(
                    h => (o, e) => h(o, e),
                    h => collection.CollectionChanged += h,
                    h => collection.CollectionChanged -= h,
                    this, (s, e) => s.OnOriginalCollectionChanged(s, e));
            }
        }
Esempio n. 25
0
        public void ForwardsSenderWhenRaising()
        {
            WeakEvent<EventHandler<EventArgs1>> handler = new WeakEvent<EventHandler<EventArgs1>>();

            handler.Add(EventReceiver1.Callback);

            EventArgs1 args = new EventArgs1(2);
            object sender = new object();

            handler.Raise(sender, args);

            Assert.That(EventReceiver1.Sender, Is.EqualTo(sender));
        }
 private void TrackCollection()
 {
     if (Items is ObservableCollection <TItem> )
     {
         var collection = (ObservableCollection <TItem>)Items;
         _itemsChangedHandler = WeakEvent.RegisterEvent <ObservableCollectionViewBase <TItem>, NotifyCollectionChangedEventHandler, NotifyCollectionChangedEventArgs>(
             this,
             h => collection.CollectionChanged += h,
             h => collection.CollectionChanged -= h,
             h => (o, e) => h(o, e),
             (subscriber, s, e) => subscriber.OnOriginalCollectionChanged(s, e));
     }
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="InteractionCapabilityTrigger"/> class.
 /// </summary>
 public InteractionCapabilityTrigger()
 {
     if (!Windows.ApplicationModel.DesignMode.DesignModeEnabled)
     {
         var weakEvent =
             new WeakEvent<InteractionCapabilityTrigger, object, WindowSizeChangedEventArgs>(this)
             {
                 EventAction = (instance, source, eventArgs) => InteractionCapabilitiesTrigger_SizeChanged(source, eventArgs),
                 DetachAction = (instance, weakEventListener) => Window.Current.SizeChanged -= weakEventListener.Handler
             };
         Window.Current.SizeChanged += weakEvent.Handler;
         UpdateTrigger(InteractionMode);
     }
 }
Esempio n. 28
0
        /// <summary>
        /// Converts a WeakEvent conforming to the standard .NET event pattern into an observable
        /// sequence, subscribing weakly.
        /// </summary>
        /// <typeparam name="TTarget">The type of target.</typeparam>
        /// <typeparam name="TEventArgs">The type of the event args.</typeparam>
        /// <param name="target">Object instance that exposes the event to convert.</param>
        /// <param name="ev">The weak event to convert.</param>
        /// <returns></returns>
        public static IObservable <EventPattern <object, TEventArgs> > FromEventPattern <TTarget, TEventArgs>(
            TTarget target, WeakEvent <TTarget, TEventArgs> ev)
            where TEventArgs : EventArgs where TTarget : class
        {
            _ = target ?? throw new ArgumentNullException(nameof(target));
            _ = ev ?? throw new ArgumentNullException(nameof(ev));

            return(Observable.Create <EventPattern <object, TEventArgs> >(observer =>
            {
                var handler = new Handler <TEventArgs>(observer);
                ev.Subscribe(target, handler);
                return () => ev.Unsubscribe(target, handler);
            }).Publish().RefCount());
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="InteractionCapabilityTrigger"/> class.
 /// </summary>
 public InteractionCapabilityTrigger()
 {
     if (!Windows.ApplicationModel.DesignMode.DesignModeEnabled)
     {
         var weakEvent =
             new WeakEvent <InteractionCapabilityTrigger, object, WindowSizeChangedEventArgs>(this)
         {
             EventAction  = (instance, source, eventArgs) => InteractionCapabilitiesTrigger_SizeChanged(source, eventArgs),
             DetachAction = (instance, weakEventListener) => Window.Current.SizeChanged -= weakEventListener.Handler
         };
         Window.Current.SizeChanged += weakEvent.Handler;
         UpdateTrigger(InteractionMode);
     }
 }
Esempio n. 30
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DelegateCommand"/> class.
        /// </summary>
        /// <param name="execute">The action that is performed when the command is executed.</param>
        /// <param name="canExecute">
        /// A predicate that determines whether the command can be executed or not.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="execute"/> is <see langword="null"/>.
        /// </exception>
        public DelegateCommand(Action<T> execute, Func<T, bool> canExecute = null)
        {
            if (execute == null)
                throw new ArgumentNullException(nameof(execute));

            _execute = execute;
            if (canExecute != null)
            {
                _canExecute = canExecute;

                _canExecuteChangedEvent = new WeakEvent<EventHandler>();

            }
        }
Esempio n. 31
0
        /// <summary>
        /// Registers a handler for the weak event which occurs after the <see cref="Settings"/> have been updated in the file.
        /// The event handler cannot be an anonymous method.
        /// For best performance, the class in which the event handler method is defined should implement <see cref="IWeakEventTarget"/>.
        /// </summary>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="property"/> and/or <paramref name="eventHandler"/> are null.
        /// </exception>
        public void RegisterSettingsChangedHandler(SettingProperty property, Action <object, EventArgs> eventHandler)
        {
            if (property == null)
            {
                throw new ArgumentNullException(nameof(property));
            }
            if (eventHandler == null)
            {
                throw new ArgumentNullException(nameof(eventHandler));
            }

            WeakEvent <object, EventArgs> keyedEvent = settingsChangedEvents.GetOrAdd(property.Name, key => new WeakEvent <object, EventArgs>());

            keyedEvent.AddListener(eventHandler);
        }
Esempio n. 32
0
        private void RegisterEvent(INotifyPropertyChanged item)
        {
            if (events.ContainsKey(item))
            {
                return;
            }

            var handler = WeakEvent.Set <ObservableView <T>, PropertyChangedEventHandler, PropertyChangedEventArgs>(
                h => (o, e) => h(o, e),
                h => item.PropertyChanged += h,
                h => item.PropertyChanged -= h,
                this, (s, e) => s.UpdateList());

            events.Add(item, handler);
        }
Esempio n. 33
0
        //--------------------------------------------------------------
        /// <summary>
        /// Initializes a new instance of the <see cref="DelegateCommand"/> class.
        /// </summary>
        /// <param name="execute">The action that is performed when the command is executed.</param>
        /// <param name="canExecute">
        /// A predicate that determines whether the command can be executed or not.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="execute"/> is <see langword="null"/>.
        /// </exception>
        public DelegateCommand(Action execute, Func<bool> canExecute = null)
        {
            if (execute == null)
                throw new ArgumentNullException(nameof(execute));

            _execute = execute;

            if (canExecute != null)
            {
                _canExecute = canExecute;
            #if !NET45
                _canExecuteChangedEvent = new WeakEvent<EventHandler>();
            #endif
            }
        }
Esempio n. 34
0
 public AsyncSocket(int BufferSize)
 {
     this.StopThread           = null;
     this.SentDisconnect       = false;
     this.BufferReadLength     = 0;
     this.BufferBeginPointer   = 0;
     this.BufferEndPointer     = 0;
     this.BufferSize           = 0;
     this.OnReceiveEvent       = new WeakEvent();
     this.OnSendReadyEvent     = new WeakEvent();
     this.OnConnectEvent       = new WeakEvent();
     this.OnConnectFailedEvent = new WeakEvent();
     this.OnDisconnectEvent    = new WeakEvent();
     this._WriteStream         = null;
     this.MainBuffer           = new byte[BufferSize];
 }
        private void RegisterEvent(INotifyPropertyChanged item)
        {
            if (_events.ContainsKey(item))
            {
                return;
            }

            var handler = WeakEvent.RegisterEvent <ObservableCollectionViewBase <TItem>, PropertyChangedEventHandler, PropertyChangedEventArgs>(
                this,
                h => item.PropertyChanged += h,
                h => item.PropertyChanged -= h,
                h => (o, e) => h(o, e),
                (subscriber, s, e) => subscriber.Refresh());

            _events.Add(item, handler);
        }
Esempio n. 36
0
        //--------------------------------------------------------------
        #region Creation & Cleanup
        //--------------------------------------------------------------

        /// <summary>
        /// Initializes a new instance of the <see cref="DelegateCommand"/> class.
        /// </summary>
        /// <param name="execute">The action that is performed when the command is executed.</param>
        /// <param name="canExecute">
        /// A predicate that determines whether the command can be executed or not.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="execute"/> is <see langword="null"/>.
        /// </exception>
        public DelegateCommand(Action execute, Func <bool> canExecute = null)
        {
            if (execute == null)
            {
                throw new ArgumentNullException(nameof(execute));
            }

            _execute = execute;

            if (canExecute != null)
            {
                _canExecute = canExecute;
#if !NET45
                _canExecuteChangedEvent = new WeakEvent <EventHandler>();
#endif
            }
        }
Esempio n. 37
0
        public void Test_MemoryLeak_WeakEvent()
        {
            // 1. Normal Event will hold the strong reference which prevent the GC collect.
            var view      = new TestView();
            var viewModel = new TestViewModel();
            var reference = new WeakReference(view);

            viewModel.TestViewModelEvent += view.OnEventOccured;
            viewModel.RaiseTestViewModelEvent();
            Assert.AreEqual(1, view.EventCount);
            Assert.AreEqual(1, viewModel.GetTestViewModelEventInvocationCount());

            view = null;
            GC.Collect();
            Assert.IsTrue(reference.IsAlive); // Still live

            viewModel.TestViewModelEvent -= reference.GetTarget <TestView>().OnEventOccured;
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
            Assert.IsFalse(reference.IsAlive);

            reference = null;
            Assert.IsNull(reference.GetTarget <TestView>());

            // 2. WeakEvent hold the weak reference which will not prevent GC collect.
            var view2      = new TestView();
            var viewModel2 = new TestViewModel();
            var reference2 = new WeakReference(view2);

            var weakEvent = new WeakEvent(view2);

            weakEvent.AttachEvent(viewModel2, null, "TestViewModelEvent", "OnEventOccured");
            viewModel2.RaiseTestViewModelEvent();


            Assert.AreEqual(1, view2.EventCount);

            view2 = null;
            GC.Collect();
            Assert.IsFalse(reference2.IsAlive);

            viewModel2.RaiseTestViewModelEvent();
            Assert.AreEqual(0, viewModel2.GetTestViewModelEventInvocationCount());
        }
Esempio n. 38
0
 public void StaticConstructorShouldThrowOnInvalidEventHandler2()
 {
   var weakEvent = new WeakEvent<Action<object, object>>();
 }
Esempio n. 39
0
        public void ShouldIgnoreGarbageCollectedSubscribers()
        {
            var handler = new WeakEvent<EventHandler<EventArgs1>>();

            var receiver = new EventReceiver1();
            var receiverReference = new WeakReference(receiver);

            var args = new EventArgs1(2);
            var sender = new object();

            handler.Add(receiver.Callback);

            handler.Raise(sender, args);

            receiver = null;

            GC.Collect();

            Assert.That(receiverReference.IsAlive, Is.False);

            handler.Raise(sender, args);

            Assert.That(handler.ListenersCount, Is.EqualTo(0));
        }
Esempio n. 40
0
 public void StaticConstructorShouldThrowOnInvalidEventHandler3()
 {
   var weakEvent = new WeakEvent<Func<object, EventArgs, int>>();
 }
 private RateLimitAwaiter CreateRateLimitAwaiter()
 {
     _weakEvent = new WeakEvent<EventHandler<QueryAwaitingEventArgs>>();
     return _fakeBuilder.GenerateClass(new ConstructorNamedParameter("queryAwaitingForRateLimitWeakEvent", _weakEvent));
 }
Esempio n. 42
0
 public Publisher1()
 {
     _myTestHandler = new WeakEvent<EventHandler<EventArgs1>>();
 }
Esempio n. 43
0
 public void AllowTypesCompatibleWithEventHandler()
 {
   var weakEvent = new WeakEvent<Action<object, EventArgs>>();
 }
Esempio n. 44
0
        public void ThrowsWhenRegisteringClosureAsHandler()
        {
            WeakEvent<EventHandler<EventArgs1>> handler = new WeakEvent<EventHandler<EventArgs1>>();

            #pragma warning disable 219
            int tempNumber;
            #pragma warning restore 219

            Assert.Throws<ArgumentException>(() => handler.Add((sender, e) => { tempNumber = e.ANumber; }));
        }
Esempio n. 45
0
        public void ThrowsWhenRaisingGivenInvalidEventArgType()
        {
            WeakEvent<EventHandler<EventArgs1>> handler = new WeakEvent<EventHandler<EventArgs1>>();

            handler.Add(EventReceiver1.Callback);

            Assert.Throws<InvalidCastException>(() => handler.Raise(null, new EventArgs2()));
        }
Esempio n. 46
0
 public void PerTestTearDown()
 {
     EventReceiver1 = null;
     EventReceiver2 = null;
     _myTestHandler = null;
 }
Esempio n. 47
0
 public InternalTweetinviEvents()
 {
     _queryBeforeExecuteWeakEvent = new WeakEvent<EventHandler<QueryBeforeExecuteEventArgs>>();
     _queryAfterExecuteWeakEvent = new WeakEvent<EventHandler<QueryAfterExecuteEventArgs>>();
 }
Esempio n. 48
0
 public void StaticConstructorShouldThrowOnInvalidEventHandler()
 {
   var weakEvent = new WeakEvent<Action<int, EventArgs>>();
 }
Esempio n. 49
0
        public void ShouldThrowWhenRegisteringClosure()
        {
            var handler = new WeakEvent<EventHandler<EventArgs1>>();

            int tempNumber;

            Assert.Throws<ArgumentException>(() => handler.Add((sender, e) => { tempNumber = e.ANumber; }));
        }
Esempio n. 50
0
        public void ShouldThrowWhenRaisingEvent()
        {
            var handler = new WeakEvent<EventHandler<EventArgs1>>();

            handler.Add(EventReceiver1.Callback);

            Assert.Throws<InvalidCastException>(() => handler.Raise(null, new EventArgs2()));
        }
Esempio n. 51
0
        public void IgnoresGarbageCollectedListeners()
        {
            WeakEvent<EventHandler<EventArgs1>> handler = new WeakEvent<EventHandler<EventArgs1>>();

            EventReceiver1 receiver = new EventReceiver1();
            WeakReference receiverReference = new WeakReference(receiver);

            EventArgs1 args = new EventArgs1(2);
            object sender = new object();

            handler.Add(receiver.Callback);

            handler.Raise(sender, args);

            // ReSharper disable RedundantAssignment
            receiver = null;
            // ReSharper restore RedundantAssignment

            GC.Collect();

            Assert.That(receiverReference.IsAlive, Is.False);

            handler.Raise(sender, args);

            Assert.That(handler.ListenersCount, Is.EqualTo(0));
        }
Esempio n. 52
0
        public void ShouldForwardSender()
        {
            var handler = new WeakEvent<EventHandler<EventArgs1>>();

            handler.Add(EventReceiver1.Callback);

            var args = new EventArgs1(2);
            var sender = new object();

            handler.Raise(sender, args);

            Assert.That(EventReceiver1.Sender, Is.EqualTo(sender));
        }
Esempio n. 53
0
 public void StaticConstructorShouldThrowOnInvalidType()
 {
   var weakEvent = new WeakEvent<object>();
 }
Esempio n. 54
0
 public void PerTestSetUp()
 {
     EventReceiver1 = new EventReceiver1();
     EventReceiver2 = new EventReceiver2();
     _myTestHandler = new WeakEvent<EventHandler<EventArgs1>>();
 }
Esempio n. 55
0
        public void ShouldNotifyEachSubscriber()
        {
            var handler = new WeakEvent<EventHandler<EventArgs1>>();

            handler.Add(EventReceiver1.Callback);
            handler.Add(EventReceiver1.Callback);

            handler.Raise(null, null);

            Assert.That(EventReceiver1.CallCounter, Is.EqualTo(2));
        }
Esempio n. 56
0
 protected BaseDisposableObject()
 {
     _disposing = new WeakEvent<EventHandler<EventArgs>>();
     _disposed = new WeakEvent<EventHandler<EventArgs>>();
 }