日期:2014-05-17  浏览次数:20928 次

WPF控制只能打开一个相同的窗口/界面
怎么样才能控制到只能打开一个相同的窗口/界面/程序呢.?
即.我有一个程序集,只有一个窗口.. 而且打开后会隐藏的,缩到右下角..(Watcher)
我想如果已经打开了一个Watcher,则再次打开的话. 不会打开2个..
而是直接return或者其他方式去终止第二打开的相同窗口..

思路的话. 我是觉得应该判断是否已经打开了该窗口.. 如果是:则终止,如果不是:则打开..

但我不知道怎么判断一个窗口是否已经打开了... 

求大神给份代码研究下.. 

PS: 不允许相同的窗口/界面/程序重复打开.
WPF 界面

------解决方案--------------------
可以使用互斥量Mutex,具体参考:http://www.cnblogs.com/zhili/p/OnlyInstance.html
------解决方案--------------------

// 进程互斥
private System.Threading.Mutex myMutex = null;

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
      // 禁止同时打开2个
      bool mutexIsNew = false;
      try
      {
        myMutex = new System.Threading.Mutex(true, configs.ID, out mutexIsNew);
      }
      catch { }
      if (!mutexIsNew)
      {
        if (configs.logsEnable) { launchLog.addLog(@"主程序多次打开,不重复启动。"); }
        this.Close();
      }