public void MessageSourceWithRealTarget_Struct()
        {
            // Prepare
            var dummyMessenger = new FirLibMessenger();

            dummyMessenger.ConnectToGlobalMessaging(
                FirLibMessengerThreadingBehavior.Ignore,
                "DummyMessenger",
                null);
            try
            {
                var realHandlerCalled = false;
                dummyMessenger.Subscribe <TestMessageStruct>(_ => realHandlerCalled = true);

                // Execute test
                var messageSource = new FirLibMessageSource <TestMessageStruct>("DummyMessenger");
                messageSource.Publish(new TestMessageStruct("Testing argument"));

                // Check results
                Assert.IsTrue(realHandlerCalled);
            }
            finally
            {
                // Cleanup
                dummyMessenger.DisconnectFromGlobalMessaging();
            }
        }
Example #2
0
        public override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            var uiMessenger = FirLibMessenger.GetByName(FirLibConstants.MESSENGER_NAME_GUI);

            _gpxFileRepo = new GpxFileRepository(uiMessenger);

            containerRegistry.RegisterSingleton <IGpxFileRepository>(
                _ => _gpxFileRepo);
            containerRegistry.RegisterSingleton <GpxFileRepository>(
                _ => _gpxFileRepo);
        }
Example #3
0
        public static FirLibApplicationLoader AttachToWpfEnvironment(this FirLibApplicationLoader loader)
        {
            var uiMessenger = new FirLibMessenger();

            loader.AddLoadAction(() =>
            {
                Application.Current.DispatcherUnhandledException += CurrentOnDispatcherUnhandledException;

                uiMessenger.CustomSynchronizationContextEqualityChecker = CheckForEqualSynchronizationContexts;
                uiMessenger.ConnectToGlobalMessaging(
                    FirLibMessengerThreadingBehavior.EnsureMainSyncContextOnSyncCalls,
                    FirLibConstants.MESSENGER_NAME_GUI,
                    SynchronizationContext.Current);
            });
            loader.AddUnloadAction(() =>
            {
                Application.Current.DispatcherUnhandledException -= CurrentOnDispatcherUnhandledException;
                uiMessenger.DisconnectFromGlobalMessaging();
            });

            return(loader);
        }