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;
    }
    }
    }
    }
    }
    }
    }
  • 相关阅读:
    假如
    Find the peace with yourself
    Sep 15th 2018
    Sep 10th 2018
    third party sales process 继续说
    成功设置open live writer
    sublime text2 基本配置及结合Python 环境
    Compmgmtlauncher.exe问题解决方法
    nginx 代理服务器
    vmware之linux不重启添加虚拟硬盘
  • 原文地址:https://www.cnblogs.com/leelike/p/1839651.html
Copyright © 2011-2022 走看看