zoukankan      html  css  js  c++  java
  • C#实现只许一个实例运行(使用mutex类)

    在google上搜了很多(全是中文的),找了半天也没有解决问题。

    最后没办法,只能搜索e版的了。于是找到了下面的答案。

    metex是mutual exclusion 的缩写,

    完整的实现参照一下:

    代码
    using System.Runtime.InteropServices;
    namespace TST.SINGLE
    {
    public class TSTPGM
    {
    [DllImport(
    "user32.dll")]
    [
    return: MarshalAs(UnmanagedType.Bool)]
    static extern bool SetForegroundWindow(IntPtr hWnd);
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
    bool createdNew = true;
    using (Mutex mutex = new Mutex(true, "MyApplicationName", out createdNew))
    {
    if (createdNew)
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(
    false);
    Application.Run(
    new MainForm());
    }
    else
    {
    Process current
    = Process.GetCurrentProcess();
    foreach (Process process in Process.GetProcessesByName(current.ProcessName))
    {
    if (process.Id != current.Id)
    {
    SetForegroundWindow(process.MainWindowHandle);
    break;
    }
    }
    }
    }
    }
    }
    }
  • 相关阅读:
    继承与多态,Instanceof关键字
    面向对象,单例模式
    方法
    数组
    流程控制
    基础语法
    连接linux四大远程工具
    MYSQL-索引的设计
    银行一类(Ⅰ类)、二类(Ⅱ类)、三类(Ⅲ类)账户区别是什么?
    真正有效的学习
  • 原文地址:https://www.cnblogs.com/leelike/p/1839651.html
Copyright © 2011-2022 走看看