c# 一个程序只能有一个副本运行,怎么解决?

来源:百度知道 编辑:UC知道 时间:2024/05/12 06:49:28
程序只能同时运行一个。如果已经有一个在运行,那么就调用那个已经运行的程序的一个方法(这个方法是用来保存数据,然后退出程序的。)。
这样,原来的那个运行的程序就会退出了。
说得有点拗口。
一个实例运行,确实是简单。可以用metex。
主要是这个“调用已经运行的程序的一个方法”很麻烦。
能写个简单的例子吗?

看来只有δCat明白我的问题啊!

/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
bool bExist;
Mutex MyMutex=new Mutex(true,"OnlyRunOncetime",out bExist);
if(bExist)
{
Application.Run(new Form1());
MyMutex.ReleaseMutex();
}
else
{
MessageBox.Show("程序已经运行!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}

}

只能有一个实例运行,实现是简单的。

但是,你说的“调用已经运行的程序的一个方法”,这个不是太实际,需要用到消息队列,或者内存交互。

解决方法:
1.当一个程序退出时,会调用保存数据方法【这个方法在程序内部】
2.启动另一个程序前,杀掉所有已存在的相同程序进程【保证同一程序同时运行一个】

using System;
class SingletonDemo
{
private static SingletonDemo theSingleton = null;
private SingletonDemo() { }
public static SingletonDemo Instance()
{
if (null != theSingleton)
{
theSingleton.Save();
theSin