您的位置:首页 > 编程语言 > C#

保证应用程序只运行一个实例[c#]

2017-10-14 21:47 281 查看
使用 互斥Mutex 保证应用程序只运行一个实例, 代码如下:

sing System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;

namespace TestPlatform
{
static class Program
{
private static Mutex _mutex = null;
private static string _mutexName = "ONLYONE_APP";
private static string _titleName = "Gps设备生产测试平台";
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
// 单一实例
try
{
_mutex = Mutex.OpenExisting(_mutexName);
MessageBox.Show(_titleName + "已经运行, 请确认!", "不可重复执行", MessageBoxButtons.OK, MessageBoxIcon.Stop);

IntPtr _handle = FindWindow(null, _titleName);
if (_handle != IntPtr.Zero)
{
//MessageBox.Show("find application.");
ShowWindow(_handle, SW_RESTORE);// 还原
}
Application.Exit();
}
catch (WaitHandleCannotBeOpenedException ex) // 不存在此 mutex
{
_mutex = new Mutex(true, _mutexName);

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FormMain());

_mutex.ReleaseMutex();
}
}

[DllImport("user32.dll")]
private static extern IntPtr FindWindow(string className, string windowName);

[DllImport("user32.dll")]
private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

private const int SW_RESTORE = 9;
}
}


 

~做事情贵在坚持~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: