C#防止程序多次运行
2024-08-31 14:28:05
经过我的测试,还比较好用,但是有个问题,如果不注销,用另一个用户进入,则程序不能判断出已运行。所以只限于用在单用户环境,还是不太完美。
class Program
{
[STAThread]
static void Main(string[] args)
{
//防止程序多次运行
if (!OneInstance.IsFirst("MyTest"))
{
Console.WriteLine("警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!");
return;
}
Console.WriteLine("正在运行中");
Console.ReadLine();
}
}
public static class OneInstance
{
///<summary>
///判断程序是否正在运行
///</summary>
///<param name="appId">程序名称</param>
///<returns>如果程序是第一次运行返回True,否则返回False</returns>
public static bool IsFirst(string appId)
{
bool ret = false;
if (OpenMutex(0x1F0001, , appId) == IntPtr.Zero)
{
CreateMutex(IntPtr.Zero, , appId);
ret = true;
}
return ret;
}
[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr OpenMutex(
uint dwDesiredAccess, // access
int bInheritHandle, // inheritance option
string lpName // object name
);
[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr CreateMutex(
IntPtr lpMutexAttributes, // SD
int bInitialOwner, // initial owner
string lpName // object name
);
}
出处:http://blog.csdn.net/lanman/article/details/3648455
最新文章
- 处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模块“ManagedPipelineHandler”
- Java特性之多态父类与子类之间的调用
- Excel Note
- 教你如何完美保存Html编辑器编辑过的文本到Word中
- 完美解决:Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&;arch=x
- SourceTree - 正在检查源... When cloning a repository, ";Checking Source"; spins forever
- Tiff – 值得你体验一下的可视化的字体对比工具
- 关于zero pivot
- 都是以父元素的width为参照物的
- POJ 3468 A Simple Problem with Integers(树状数组)
- java第二周学习日记
- char值码对应大全
- WPF学习(11)2D绘图
- linux下crontab的使用实现
- 觉得VR头显太笨重?轻便的VR“神器”来了
- JavaScript input框输入实时校验
- view类的XML属性
- linq语句复杂查询和分开查询的性能对比
- Mac下CUDA开启及Tensorflow-gpu安装
- 第三次Java作