A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© V_John 中级黑马   /  2013-10-26 00:29  /  1095 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有时候程序只需要运行一个程序,不想出现第二个怎么办?这就需要特别处理下
  如果是WPF,就需要在public MainWindow()方法里面添加这么一句
  string procName = System.Diagnostics.Process.GetCurrentProcess().ProcessName;//得到.csproj的实例名
            if ((System.Diagnostics.Process.GetProcessesByName(procName)).GetUpperBound(0) > 0)
            {
                System.Windows.Forms.MessageBox.Show("程序已经运行!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                //System.Windows.Forms.Application.Exit();//Winform是这么用的
    this.Close();
                return;
            }
这样程序在先运行的时候,要检查一下,看看是不是还有一个程序运行,如果运行了就关闭它,然后突出关闭它

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

4 个回复

倒序浏览
有一种东西叫做互斥体。
有一个DotNet类叫做Mutex
回复 使用道具 举报
pm324 发表于 2013-10-29 22:30
有一种东西叫做互斥体。
有一个DotNet类叫做Mutex

Mutex类?是什么动动?
回复 使用道具 举报
V_John 发表于 2013-10-31 19:46
Mutex类?是什么动动?

1. Mutex是一个令牌;
2. 当一个线程拿到这个令牌时运行,另外想拿到令牌的线程就必须等待;
3. 直到拿到令牌的线程释放令牌;
4. 没有所有权的线程是无法释放令牌的。
回复 使用道具 举报 1 0
许庭洲 发表于 2013-10-31 20:34
1. Mutex是一个令牌;
2. 当一个线程拿到这个令牌时运行,另外想拿到令牌的线程就必须等待;
3. 直到拿到令 ...

学习了,支持一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马