我遇到了一个非常严重的问题,与我的小应用程序相关; 基本上很容易理解:
我的软件开启后,可以运行。
我想重点讲述打开另一个实例(我指重新打开.exe文件),检查它是否已经打开。 如果没有打开,只需启动应用程序,但如果已经运行(即第二个或更多实例),则将输入参数(args字符串数组)“简单地”传递给第一个实例,该实例将适当地处理它。
以下是我的program.cs代码:
static class Program
{
static Mutex mutex = new Mutex(true, "{blabla}");
[STAThread]
static void Main(String[] args)
{
if (mutex.WaitOne(TimeSpan.Zero, true))
{
//First Instance!
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
CALL A MY STATIC METHOD, DO SOME THINGS
Application.Run(new Form1());
}
finally
{
mutex.ReleaseMutex();
}
}
else
{
//Not-so-first instance!
CALL A STATIC METHOD,
DO OTHER THINGS LIKE COMUNICATE WITH FIRST INSTANCE
SIMPLY CLOSE.
}
}
}
这个程序(使用互斥锁)只能识别已经打开的实例,但是它无法与主实例通信。
我尝试了很多东西但是无法让它工作。
我尝试了这个方法,但是我真的不明白(浪费了很多时间后)如何将我的“第一次”代码和“已运行”的代码放在一起。
也尝试了MSMQ但是无法让它工作。
有人可以帮帮我吗? 这是一个非常基本的软件,只做一些非常基本的事情,但我已经花了一天时间让它按照我的要求工作!