Liny_@NotePad

沉迷ACG中

C#单实例运行Sample

之前在C++里接触过内核同步对象,早上在前辈的代码里看到了,于是用C#实现看看。

其实很简单,通过System.Threading.Mutex就可以直接管理了……

使用文件锁防止多个应用。。

 原先发的是通过占用固定端口来判断程序是否重复打开,显然很容易和其他应用程序的端口冲突,

在研究Java能不能访问系统内核对象之前。。先用比较简单的方法:对一个文件加锁来防止多个应用重复打开。

这个方法的缺陷是需要另一个文件参与。

【20090916】C++培训日记-使用内核对象使程序单实例运行

内核对象是所有Windows进程都可以访问的,因此可以使用其中的互斥信号量和事件对象使程序单实例运行。。

比起原来的IO锁好了很多 = = DEMO如下:

同时只能运行一个程序实例的实现

做软工作业的机房管理系统,各个计算机要有一个监听自身信息的客户端,于是就牵出了一个同时只能运行一个实例的问题。

其实想想也很简单。因为对于现在应用的各个操作系统,都有端口存在,而一个端口只能被一个程序所占用,

因此,在实例化之前只需要启动一个Socket去连接该应用程序所占用的端口,如果能连接上表示该端口已经启动了一个ServerSocket,

不能连接上则启动一个ServerSocket来占用它即可。

但是有个小缺陷:有可能别的程序也占用了该端口,因此很考验RP 。 - -