WPF控制只能打开一个相同的窗口/界面

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

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

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

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

PS: 不允许相同的窗口/界面/程序重复打开.
...全文
1438 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
杨门剑侠 2013-12-30
  • 打赏
  • 举报
回复
引用 5 楼 lyzqyc 的回复:
[quote=引用 4 楼 lerbornjames 的回复:] [quote=引用 2 楼 lizhi3186575 的回复:] 可以使用互斥量Mutex,具体参考:http://www.cnblogs.com/zhili/p/OnlyInstance.html
引用 3 楼 slowhand 的回复:

// 进程互斥
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();
      }
我自己研究完了.. 和4楼的代码几乎一样.. 也研究了3楼的那个类.. 虽然解决.. 但也谢谢.. [/quote] 那个configs怎么来的啊?[/quote] 就是一个字符串,下面的不要,上面的改成字符串
lyzqyc 2013-10-28
  • 打赏
  • 举报
回复
引用 4 楼 lerbornjames 的回复:
[quote=引用 2 楼 lizhi3186575 的回复:] 可以使用互斥量Mutex,具体参考:http://www.cnblogs.com/zhili/p/OnlyInstance.html
引用 3 楼 slowhand 的回复:

// 进程互斥
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();
      }
我自己研究完了.. 和4楼的代码几乎一样.. 也研究了3楼的那个类.. 虽然解决.. 但也谢谢.. [/quote] 那个configs怎么来的啊?
APM60- 2013-08-08
  • 打赏
  • 举报
回复

// 进程互斥
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();
      }
人生导师 2013-08-08
  • 打赏
  • 举报
回复
可以使用互斥量Mutex,具体参考:http://www.cnblogs.com/zhili/p/OnlyInstance.html
叫我猫爷_ 2013-08-08
  • 打赏
  • 举报
回复
自己顶上去......
叫我猫爷_ 2013-08-08
  • 打赏
  • 举报
回复
引用 2 楼 lizhi3186575 的回复:
可以使用互斥量Mutex,具体参考:http://www.cnblogs.com/zhili/p/OnlyInstance.html
引用 3 楼 slowhand 的回复:

// 进程互斥
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();
      }
我自己研究完了.. 和4楼的代码几乎一样.. 也研究了3楼的那个类.. 虽然解决.. 但也谢谢..

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧