2018-2-13-WPF-只允许打开一个实例
2023-09-27 14:28:50 时间
title | author | date | CreateTime | categories |
---|---|---|---|---|
WPF 只允许打开一个实例 |
lindexi |
2018-2-13 17:23:3 +0800 |
2018-2-13 17:23:3 +0800 |
WPF |
我们有时候只希望我们的程序只打开一个实例,也就是我们的软件只有一次被打开。 那么我们可以通过一个办法知道,在这个软件打开前是不是打开过一个,还没关闭。也就是是否存在另一个程序在运行。
下面是一个简单方法
// 确保不存在程序的其他实例
singleInstanceWatcher = new Semaphore(
0, // Initial count.
1, // Maximum count.
Assembly.GetExecutingAssembly().GetName().Name, out createdNew);
if (createdNew)
{
//之前没有运行过
}
else
{
//重复运行
MessageBox.Show("请不要重复运行(ノ`Д)ノ");
Environment.Exit(-2);
}
另一个方法
string mutexName = Properties.Resources.ProgramTitle + "Mutex";
singleInstanceWatcher = new Mutex(false, mutexName, out createdNew);
if (!createdNew)
{
MessageBox.Show("程序已经运行!", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
Environment.Exit(-1);
}
bool createdNew;
System.Threading.Mutex instance = new System.Threading.Mutex(true, "MutexName", out createdNew);
if (createdNew)
{
Application.Run(new LoginForm());
instance.ReleaseMutex();
}
else
{
Application.Exit();
}
相关文章
- 如何在WPF中引用Windows.System.Forms.Integration
- WPF数据表DataTable添加ROW报错:This row already belongs to another table
- WPF GroupBox样式
- WPF 列表开启虚拟化的方式
- 2019-5-13-WPF-从触摸消息转触摸事件
- 2019-5-13-WPF-从触摸消息转触摸事件
- 2019-10-18-WPF-高速书写-StylusPlugIn-原理
- 2018-8-3-WPF-读取硬件序列号
- 2018-3-8-WPF-UncommonField-类型是什么
- wpf textblock 长文本滚动
- C# wpf 使用资源文件 resx