Example #1
0
        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;
 }