public void ShouldReceiveDelegateOnDifferentThread() { ManualResetEvent completeEvent = new ManualResetEvent(false); SynchronizationContext.SetSynchronizationContext(new SynchronizationContext()); SynchronizationContext calledSyncContext = null; Action <object> action = delegate { calledSyncContext = SynchronizationContext.Current; completeEvent.Set(); }; IDelegateReference actionDelegateReference = new MockDelegateReference() { Target = action }; IDelegateReference filterDelegateReference = new MockDelegateReference() { Target = (Predicate <object>) delegate { return(true); } }; var eventSubscription = new BackgroundEventSubscription <object>(actionDelegateReference, filterDelegateReference); var publishAction = eventSubscription.GetExecutionStrategy(); Assert.NotNull(publishAction); publishAction.Invoke(null); completeEvent.WaitOne(5000); Assert.NotEqual(SynchronizationContext.Current, calledSyncContext); }
public void ShouldReceiveDelegateOnDifferentThread() { ManualResetEvent completeEvent = new ManualResetEvent(false); SynchronizationContext.SetSynchronizationContext(new SynchronizationContext()); SynchronizationContext calledSyncContext = null; Action<object> action = delegate { calledSyncContext = SynchronizationContext.Current; completeEvent.Set(); }; IDelegateReference actionDelegateReference = new MockDelegateReference() { Target = action }; IDelegateReference filterDelegateReference = new MockDelegateReference() { Target = (Predicate<object>)delegate { return true; } }; var eventSubscription = new BackgroundEventSubscription<object>(actionDelegateReference, filterDelegateReference, null, EventCommunicatorsRelationship.All); var publishAction = eventSubscription.GetExecutionStrategy(); Assert.NotNull(publishAction); publishAction.Invoke(null); completeEvent.WaitOne(5000); Assert.NotEqual(SynchronizationContext.Current, calledSyncContext); }
public void ShouldReceiveDelegateOnDifferentThread() { int calledThreadId = -1; ManualResetEvent completeEvent = new ManualResetEvent(false); Action<object> action = delegate { calledThreadId = Thread.CurrentThread.ManagedThreadId; completeEvent.Set(); }; IDelegateReference actionDelegateReference = new MockDelegateReference() { Target = action }; IDelegateReference filterDelegateReference = new MockDelegateReference() { Target = (Predicate<object>)delegate { return true; } }; var eventSubscription = new BackgroundEventSubscription<object>(actionDelegateReference, filterDelegateReference); var publishAction = eventSubscription.GetExecutionStrategy(); Assert.IsNotNull(publishAction); publishAction.Invoke(null); completeEvent.WaitOne(5000, false); Assert.AreNotEqual(Thread.CurrentThread.ManagedThreadId, calledThreadId); }
public void ShouldReceiveDelegateOnDifferentThread() { int calledThreadId = -1; ManualResetEvent completeEvent = new ManualResetEvent(false); Action <object> action = delegate { calledThreadId = Thread.CurrentThread.ManagedThreadId; completeEvent.Set(); }; IDelegateReference actionDelegateReference = new MockDelegateReference() { Target = action }; IDelegateReference filterDelegateReference = new MockDelegateReference() { Target = (Predicate <object>) delegate { return(true); } }; var eventSubscription = new BackgroundEventSubscription <object>(actionDelegateReference, filterDelegateReference); var publishAction = eventSubscription.GetExecutionStrategy(); Assert.IsNotNull(publishAction); publishAction.Invoke(null); completeEvent.WaitOne(5000, false); Assert.AreNotEqual(Thread.CurrentThread.ManagedThreadId, calledThreadId); }
public void ShouldReceiveDelegateOnDifferentThreadNonGeneric() { var completeEvent = new ManualResetEvent(false); SynchronizationContext.SetSynchronizationContext(new SynchronizationContext()); SynchronizationContext calledSyncContext = null; void action() { calledSyncContext = SynchronizationContext.Current; completeEvent.Set(); } IDelegateReference actionDelegateReference = new MockDelegateReference() { Target = (Action)action }; var eventSubscription = new BackgroundEventSubscription(actionDelegateReference); var publishAction = eventSubscription.GetExecutionStrategy(); Assert.NotNull(publishAction); publishAction.Invoke(null); completeEvent.WaitOne(5000); Assert.NotEqual(SynchronizationContext.Current, calledSyncContext); }