public void cannot_set_wpf_gui_thread_twice() { var guiThreadProvider = new Mock <IGuiThreadProvider>(); var guiChanged = new WpfGuiChangedMessage(guiThreadProvider.Object); _eventAggregator.Publish(guiChanged); Assert.Throws <InvalidOperationException>(() => _eventAggregator.Publish(guiChanged), "Cannot set wpf gui thread twice!"); }
public void wpf_gui_changed_supported_by_eventaggregator() { var guiThreadProvider = new Mock <IGuiThreadProvider>(); var guiChanged = new WpfGuiChangedMessage(guiThreadProvider.Object); _eventAggregator.Publish(guiChanged); _eventAggregator.Subscribe <NullMessage>((x) => { }, DeliveryMethod.GuiThread); _eventAggregator.Publish(new NullMessage()); // verify that publish executed in gui thread guiThreadProvider.Verify(x => x.RunInGui(It.IsAny <Action>()), Times.Exactly(1), "After changing type of IGuiThreadProvider, gui should be executed in new gui thread"); }
private void GuiThreadChanged(WpfGuiChangedMessage wpfGuiChangedMessage) { _guiThreadProvider = wpfGuiChangedMessage.NewGuiThreadProvider; Unsubscribe(_ticket); _ticket = Subscribe <WpfGuiChangedMessage>(GuiThreadChangedInvalid); }