public void MessagesAreDeliveredOnTheUserInterfaceThread() { #if !SILVERLIGHT // In silverlight the tests are already running on the UI Thread with the Synchronization context set. SynchronizationContext.SetSynchronizationContext(new WindowsFormsSynchronizationContext()); #endif using (var kernel = this.CreateKernel()) { var publisher = kernel.Get <PublisherMock>(); var sub = kernel.Get <SubscriberUserInterfaceMock>(); var id = Thread.CurrentThread.ManagedThreadId; Debug.WriteLine("Current Thread : " + id); Debug.WriteLine("Context : " + SynchronizationContext.Current); ThreadPool.QueueUserWorkItem(s => publisher.SendMessage(UserInterfaceSynchronizedMessage)); Thread.Sleep(1000); // give the BG thread enough time to be created and execute. #if !SILVERLIGHT Application.DoEvents(); // processes all waiting messages sub.LastMessage.ShouldBe(UserInterfaceSynchronizedMessage); sub.DeliveryThreadId.ShouldBe(id); #else subscriber = sub; #endif } }
public void DisposingObjectRemovesSubscriptionsRequestedByIt() { using (var kernel = this.CreateKernel()) { var publisher = kernel.Get <PublisherMock>(); var subscriber = kernel.Get <SubscriberMock>(); var messageBroker = kernel.Components.Get <IWeakEventMessageBroker>(); IMessageChannel channel = messageBroker.GetChannel("message://PublisherMock/MessageReceived"); int subscriptionCountBeforeSubscriberDisposal = channel.Subscriptions.Count; subscriber.ShouldNotBeNull(); subscriber = null; // needed for GC to clean. GC.Collect(); GC.WaitForPendingFinalizers(); publisher.SendMessage("message"); // when messages are sent the subscriptions are updated. int subscriptionCountAfterSubscriberDisposal = channel.Subscriptions.Count; subscriptionCountBeforeSubscriberDisposal.ShouldBe(1); subscriptionCountAfterSubscriberDisposal.ShouldBe(0); } }
public void MessagesAreDeliveredOnTheUserInterfaceThread() { #if !SILVERLIGHT // In silverlight the tests are already running on the UI Thread with the Synchronization context set. SynchronizationContext.SetSynchronizationContext(new WindowsFormsSynchronizationContext()); #endif using (var kernel = this.CreateKernel()) { var publisher = kernel.Get<PublisherMock>(); var sub = kernel.Get<SubscriberUserInterfaceMock>(); var id = Thread.CurrentThread.ManagedThreadId; Debug.WriteLine("Current Thread : " + id); Debug.WriteLine("Context : " + SynchronizationContext.Current); ThreadPool.QueueUserWorkItem(s => publisher.SendMessage(UserInterfaceSynchronizedMessage)); Thread.Sleep(1000); // give the BG thread enough time to be created and execute. #if !SILVERLIGHT Application.DoEvents(); // processes all waiting messages sub.LastMessage.ShouldBe(UserInterfaceSynchronizedMessage); sub.DeliveryThreadId.ShouldBe(id); #else subscriber = sub; #endif } }
public void DisposingObjectRemovesSubscriptionsRequestedByIt() { using (var kernel = this.CreateKernel()) { var publisher = kernel.Get<PublisherMock>(); var subscriber = kernel.Get<SubscriberMock>(); var messageBroker = kernel.Components.Get<IWeakEventMessageBroker>(); IMessageChannel channel = messageBroker.GetChannel("message://PublisherMock/MessageReceived"); int subscriptionCountBeforeSubscriberDisposal = channel.Subscriptions.Count; subscriber.ShouldNotBeNull(); subscriber = null; // needed for GC to clean. GC.Collect(); GC.WaitForPendingFinalizers(); publisher.SendMessage("message"); // when messages are sent the subscriptions are updated. int subscriptionCountAfterSubscriberDisposal = channel.Subscriptions.Count; subscriptionCountBeforeSubscriberDisposal.ShouldBe(1); subscriptionCountAfterSubscriberDisposal.ShouldBe(0); } }