public MainViewModel(IUIVisualizerService visualizerService, IViewAwareStatusWindow window, IMessageBoxService messageBoxService, IHartCommunicationLiteEx hartCommunication, IVersionService versionService)
        {
            _synchronizationContext = SynchronizationContext.Current;

            _settingsViewModel = new SettingsViewModel();
            _visualizerService = visualizerService;
            _messageBoxService = messageBoxService;
            _hartCommunication = hartCommunication;
            _versionService    = versionService;
            _versionService.GetOnlineVersionResult += (sender, onlineVersion) =>
            {
                if (onlineVersion != new Version())
                {
                    Settings.Default.LastUpdateCheck = DateTime.Now;
                }

                if (versionService.GetCurrentVersion() < onlineVersion)
                {
                    _synchronizationContext.Send(obj => _visualizerService.ShowDialog("UpdateViewModel", new UpdateViewModel(_versionService)), null);
                }
            };

            window.ViewLoaded += () =>
            {
                if (Settings.Default.ShowOnStartup)
                {
                    _visualizerService.ShowDialog("SettingsViewModel", _settingsViewModel);
                }

                CheckUpdates(_versionService);
            };
            window.ViewWindowClosed += () =>
            {
                Settings.Default.Save();
                Application.Current.Shutdown();
            };
            ReadSettings();
            DataTransferModel = DataTransferModel.GetInstance();

            InitCommands();
        }