首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何防止程序多次运行

一、引言 最近发现很多人在论坛中问到如何防止程序多次运行的问题的,如: http://social.msdn.microsoft.com/Forums/zh-CN/6398fb10-ecc2-4c03...(当我们点击exe之后,程序运行,系统会创建一个与与程序同名的进程) 既然我们要防止程序运行多次,也就是说程序只能运行一次,从操作系统的角度来讲就是该程序的进程只能是唯一的,分析到这里我们自然就想到了,...要保证该程序进程只有一个,我们就要判断下该程序进程是否在自己的操作系统上运行了,如果已经运行了一个进程,当我们下次运行exe的时候,此时不是再开启该程序进程,而是退出,弹出一个提示框告诉用户该程序已经运行...,如果操作系统没有运行该程序进程,则运行这个程序。...从而这个问题就转换为判断该程序进程的数量问题了,此时我们就想.NET 有没有提供一个类可以获得该进程名的数量,如果数量大于1则说明该程序已经运行了,小于就表明程序没有运行。

1.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C# 开发技巧]如何防止程序多次运行 线程 进程

    程序员必有一些好习惯,我的就是看到好文章就收下 文章来源 http://www.cnblogs.com/zhili/p/OnlyInstance.html 转载请注明出处 最近发现很多人在论坛中问到如何防止程序多次运行的问题的...(当我们点击exe之后,程序运行,系统会创建一个与与程序同名的进程) 既然我们要防止程序运行多次,也就是说程序只能运行一次,从操作系统的角度来讲就是该程序的进程只能是唯一的,分析到这里我们自然就想到了,...要保证该程序进程只有一个,我们就要判断下该程序进程是否在自己的操作系统上运行了,如果已经运行了一个进程,当我们下次运行exe的时候,此时不是再开启该程序进程,而是退出,弹出一个提示框告诉用户该程序已经运行...,如果操作系统没有运行该程序进程,则运行这个程序。...从而这个问题就转换为判断该程序进程的数量问题了,此时我们就想.NET 有没有提供一个类可以获得该进程名的数量,如果数量大于1则说明该程序已经运行了,小于就表明程序没有运行。

    1.6K30

    debug 看程序启动

    debug的重要性我就不说了,程序员不会debug,就像厨师不会用菜刀。 debug不止是寻找错误的,更重要的是辅助逻辑的分析,在分析中你也可以学到很多知识。...这时你想回到刚才程序运行的地方,但是七秒钟记忆的你忘记了怎么办?...放心,有一个小伙伴帮你看着呢,他就是小前----回到刚才程序运行处,由于他的看守,所以你可以肆无忌惮地乱跑,点击一下他,就能回到刚才程序运行的地方。 ?...点击这个,当前断点就会被放行,程序继续运行,当运行到下一个断点时就会停下,也就是inflateWidget处,这样就可以避免调试中间的流程。...---- Run to Cursor可以让程序运行到指定光标处,注意它碰到其他断点会先停留在断点处 ?

    75220

    Go 程序启动流程

    ; 为主线程分配栈空间; 把由用户在命令行输入的参数拷贝到主线程的栈; 把主线程放入操作系统的运行队列等待被调度执起来运行 那么可执行程序实际的启动流程是怎么样的呢?...2:Go程序启动流程 1:如何获得Go汇编 很多 Go 语言的开发者都知道我们可以使用下面的命令将 Go 语言的源代码编译成汇编语言,然后通过汇编语言分析程序具体的执行过程。...Go 程序启动后需要对自身运行时进行初始化,其真正的程序入口由 runtime 包控制,同时针对不同的系统平台,在src/runtime目录下游ret0开头的汇编文件,比如windows下的ret0*...amd64(SB),NOSPLIT,$-8 MOVQ 0(SP), DI // argc LEAQ 8(SP), SI // argv JMP runtime·rt0_go(SB) // go程序启动时进行初始化工作..., 执行队列中 入口方法是 runtime.main 的 G 这些启动的顺序其实在schedinit()函数有注释的,这里就很清楚的说明了启动的调用序列。

    76720

    Windows程序启动原理

    在Windows操作系统下,主要有2个文件夹和8个注册表键项控制程序的自启动,下面主要介绍这2个文件夹和8 个注册表项: 1.用户专用启动文件夹-——最常见的自启动程序文件夹,它位于系统分区盘下,路径为...: 系统盘:\\Dcoument and Setting\\开始\程序\启动,它是针对用户来使用的。...2.所有用户启动文件夹——另外一个常见自启动程序文件夹,它位于系统分区盘下,路径为: 系统盘:\\Dcoument and Setting\ALL USER\开始\程序\启动,而该文件夹是针对所有的用户...,所以 在键值的数值中可以加入其它程序,系统启动时加载程序的。...载相关联的程序 位于[HKEY_CURRENT_USER]根键下的“RunOnce”子键在操作系统处理完其它注册表Run子键及自启动文件 夹内的程序后再加载

    3K50

    程序启动方式 - ActiveX

    也是那时候,我写了我人生第一个Widnows程序,也就此跟VC结下了不解之缘。     当时写的东西是“编程实现自启动”。当时还是懵懂初开,查了不少资料,写了一个基于修改注册表实现的自启动。...这里判断其打开成功或失败的原因是,如果打开成功,说明有该键不存在,进一步说明这个程序是第一次自启动,这时我们就执行if语句中的内容。    ...这个函数在这里就是创建一个键名为StubPath的子键,其值是我们需要自启动程序的绝对地址。...,但是试了很多次都没有成功。...我估计原因是这样,第一次程序启动成功后,在程序结束运行的时候系统才新建这个键。所以我程序中删除该键的时候,该键其实并不存在。

    1.1K10

    Golang 程序启动流程分析

    3、为主线程分配栈空间; 4、把由用户在命令行输入的参数拷贝到主线程的栈; 5、把主线程放入操作系统的运行队列等待被调度执起来运行; Golang 程序启动流程分析 1、通过 gdb...调试分析程序启动流程 此处以一个简单的 go 程序通过单步调试来分析其启动过程的流程: main.go package main import "fmt" func main() { fmt.Println...使用 gdb 调试时首先在程序入口处设置一个断点,然后进行单步调试即可看到该程序启动过程中的代码执行流程。...调试已经看到了 golang 程序启动过程中会执行一系列的汇编指令,本节会具体分析启动程序过程中每条指令的含义,了解了这些才能明白 golang 程序启动过程中所执行的操作。...-i _cgo_init 2159: 000000000054aa88 8 OBJECT GLOBAL DEFAULT 11 _cgo_init 总结 本文主要介绍 Golang 程序启动流程中的关键代码

    1.4K10

    WPF程序开发-保证程序启动唯一

    前言 要保证程序唯一,有两种方式 新程序启动时发现已启动就自动退出 新程序启动发现已启动关闭之前的程序 关闭新进程 根据进程 protected override void OnStartup(StartupEventArgs...e) { checkProcess(); } private void checkProcess() { Console.WriteLine("程序启动"); //获取欲启动进程名...string ProcessName = Process.GetCurrentProcess().ProcessName; //检查进程是否已经启动,已经启动则显示报错信息退出程序。...控制当前程序已经打开(即启动) //利用Mutex互斥量实现同时只有一个进程实例在运行 //互斥锁(Mutex) //互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它...("程序启动"); bool createNew; string strProcessName = System.Diagnostics.Process.GetCurrentProcess

    73210
    领券