Beispiel #1
0
        public void IsInvalidWhenTargetIsCollected()
        {
            MockDelegateTarget mockDelegateTarget = new MockDelegateTarget();
              var weakDelegate = new WeakDelegate<Action<object>>(mockDelegateTarget.DelegateMethod);

              mockDelegateTarget = null;
              GC.Collect();

              Assert.IsFalse(weakDelegate.IsAlive);
        }
Beispiel #2
0
        public void RetrieveDelegateOfGarbageCollectedObject()
        {
            MockDelegateTarget mockDelegateTarget = new MockDelegateTarget();
              var weakDelegate = new WeakDelegate<Action<object>>(mockDelegateTarget.DelegateMethod);

              mockDelegateTarget = null;
              GC.Collect();

              Assert.IsNull(weakDelegate.Delegate);
        }
Beispiel #3
0
        public void RetrieveDelegateOfObjectMethod()
        {
            MockDelegateTarget mockDelegateTarget = new MockDelegateTarget();
              var weakDelegate = new WeakDelegate<Action<object>>(mockDelegateTarget.DelegateMethod);

              object dummyParameter = new object();
              Delegate d = weakDelegate.Delegate;
              d.DynamicInvoke(dummyParameter);
              Assert.IsTrue(mockDelegateTarget.DelegateCalled);
              Assert.AreSame(dummyParameter, mockDelegateTarget.DelegateParameter);
        }
Beispiel #4
0
        public void IsValidAsLongAsTargetIsAlive()
        {
            MockDelegateTarget mockDelegateTarget = new MockDelegateTarget();
              var weakDelegate = new WeakDelegate<Action<object>>(mockDelegateTarget.DelegateMethod);

              GC.Collect();
              Assert.IsTrue(weakDelegate.IsAlive);

              object dummyParameter = new object();
              weakDelegate.Invoke(dummyParameter);
              Assert.IsTrue(mockDelegateTarget.DelegateCalled);
              Assert.AreSame(dummyParameter, mockDelegateTarget.DelegateParameter);
        }
Beispiel #5
0
        public void IsAlwaysValidForStaticMethods()
        {
            var weakDelegate = new WeakDelegate<Action<object>>(MockStaticDelegateTarget.DelegateMethod);

              GC.Collect();
              Assert.IsTrue(weakDelegate.IsAlive);

              MockStaticDelegateTarget.Clear();
              object dummyParameter = new object();
              weakDelegate.Invoke(dummyParameter);
              Assert.IsTrue(MockStaticDelegateTarget.DelegateCalled);
              Assert.AreSame(dummyParameter, MockStaticDelegateTarget.DelegateParameter);
        }
        static void OperationLoop(WeakDelegate<Action> loopBodyReference, TimeSpan loopIterationDelay, CancellationToken cancellationToken)
        {
            while (true)
            {
                if (cancellationToken.IsCancellationRequested)
                    return;

                try
                {
                    if (!loopBodyReference.TryExecute())
                        return;

                    Task.Delay(loopIterationDelay, cancellationToken).Wait();
                }
                catch (ThreadAbortException)
                { /* expected */ }
                catch (Exception ex)
                {
                    InternalTrace.Warning(ex, "Failed executing operation loop");
                    // TODO notify about error via event (?)
                }
            }
        }
 public AsyncLoop(Action loopBody)
 {
     this.Name = Guid.NewGuid().ToString();
     LoopBodyReference = new WeakDelegate<Action>(this, loopBody);
 }
Beispiel #8
0
        public void RetrieveDelegateOfStaticMethod()
        {
            var weakDelegate = new WeakDelegate<Action<object>>(MockStaticDelegateTarget.DelegateMethod);

              MockStaticDelegateTarget.Clear();
              object dummyParameter = new object();
              Delegate d = weakDelegate.Delegate;
              d.DynamicInvoke(dummyParameter);
              Assert.IsTrue(MockStaticDelegateTarget.DelegateCalled);
              Assert.AreSame(dummyParameter, MockStaticDelegateTarget.DelegateParameter);
        }
Beispiel #9
0
 public void MethodInfo()
 {
     MockDelegateTarget mockDelegateTarget = new MockDelegateTarget();
       var weakDelegate = new WeakDelegate<Action<object>>(mockDelegateTarget.DelegateMethod);
       Assert.AreEqual("DelegateMethod", weakDelegate.MethodInfo.Name);
 }
                /// <summary>
                ///     Initializes a new instance of the <see cref="HandlerEntry" /> class.
                ///     Initialisiert eine neue Instanz der <see cref="HandlerEntry" /> Klasse.
                ///     Initializes a new instance of the <see cref="HandlerEntry" /> class.
                /// </summary>
                /// <param name="methodInfo">
                ///     The method info.
                /// </param>
                /// <param name="target">
                ///     The target.
                /// </param>
                public HandlerEntry(MethodBase methodInfo, object target)
                {
                    Contract.Requires<ArgumentNullException>(methodInfo != null, "methodInfo");
                    Contract.Requires<ArgumentNullException>(target != null, "target");

                    _type = (InvokeType) methodInfo.GetParameters().Length;
                    _delegate = new WeakDelegate(methodInfo, target);
                }
Beispiel #11
0
        public void TargetReference()
        {
            MockDelegateTarget mockDelegateTarget = new MockDelegateTarget();
              var weakDelegate = new WeakDelegate<Action<object>>(mockDelegateTarget.DelegateMethod);
              Assert.AreEqual(mockDelegateTarget, weakDelegate.TargetReference.Target);

              mockDelegateTarget = null;
              GC.Collect();
              Assert.IsNull(weakDelegate.TargetReference.Target);
        }
Beispiel #12
0
 public void ConstructorShouldThrowExceptionOnNull()
 {
     WeakDelegate<Action> weakDelegate = new WeakDelegate<Action>(null);
 }
Beispiel #13
0
 public void StaticConstructorShouldThrowExceptionOnNonDelegate()
 {
     WeakDelegate<object> weakDelegate = new WeakDelegate<object>(new object());
 }
Beispiel #14
0
        public void RetrieveDelegateTypeOfObjectMethod()
        {
            MockDelegateTarget mockDelegateTarget = new MockDelegateTarget();
              var weakDelegate = new WeakDelegate<Action<object>>(mockDelegateTarget.DelegateMethod);

              Assert.AreEqual(typeof(Action<object>), weakDelegate.DelegateType);
        }
Beispiel #15
0
 public static T CreateInvoke(WeakDelegate <T> target)
 {
     return(_buildInvoke.CreateDelegate <T>(target));
 }
Beispiel #16
0
 public AsyncLoop(string name, Action loopBody)
 {
     this.Name = name;
     LoopBodyReference = new WeakDelegate<Action>(this, loopBody);
 }
Beispiel #17
0
            public  HidThread(string deviceName, string devicePath, DataReadCallback callback, ThreadExceptionCallback exceptionCallback)
            {
                devicename = deviceName;
                devicepath = devicePath;
                wdcallback = new WeakDelegate(callback);
                wdexcallback = new WeakDelegate(exceptionCallback);
                
                // Initialize ResourceManager for loading localizable strings
                rm = new ResourceManager("Strings", Assembly.GetExecutingAssembly());
                
                // Create an event to signal that the thread is up and running
                ThreadStarted = new ManualResetEvent(false);

                // Create a new event to signal the thread to terminate
                ThreadTerminating = new ManualResetEvent(false);
            }
                /// <summary>
                ///     Initializes a new instance of the <see cref="HandlerEntry" /> class.
                ///     Initialisiert eine neue Instanz der <see cref="HandlerEntry" /> Klasse.
                ///     Initializes a new instance of the <see cref="HandlerEntry" /> class.
                /// </summary>
                /// <param name="dDelegate">
                ///     The d delegate.
                /// </param>
                public HandlerEntry(Delegate dDelegate)
                {
                    Contract.Requires<ArgumentNullException>(dDelegate != null, "dDelegate");

                    _type = (InvokeType) dDelegate.Method.GetParameters().Length;
                    _delegate = new WeakDelegate(dDelegate);
                }