protected override void OnStartup(StartupEventArgs e) { // store mutex result bool createdNew; // allow multiple users to run it, but only one per user var allowEveryoneRule = new MutexAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), MutexRights.FullControl, AccessControlType.Allow); var securitySettings = new MutexSecurity(); securitySettings.AddAccessRule(allowEveryoneRule); // create mutex _instanceMutex = new Mutex(true, @"Global\MercurialForge_Mastery", out createdNew, securitySettings); // check if conflict if (!createdNew) { MessageBox.Show("Instance of Mastery is already running"); _instanceMutex = null; Application.Current.Shutdown(); return; } base.OnStartup(e); MainWindow window = new MainWindow(); MainWindowViewModel viewModel = new MainWindowViewModel(window); window.DataContext = viewModel; window.Show(); }
public MonitorWindow(MainWindowViewModel parentViewModel) { InitializeComponent(); MainWindow = parentViewModel; ActiveApps = new ObservableCollection<string>(); MonitoredApps = new ObservableCollection<string>(MainWindow.CurrentProject.Applications); m_pullAppsTimer = new Timer(new TimerCallback(this.UpdateAppsList), null, 0, 500); comboBox.SelectedIndex = 0; DataContext = this; }