我的小应用程序出现严重问题;基本上很容易理解:
我的软件,当打开时,做它的事情。
我想专注于打开另一个实例(我的意思是再次打开 .exe),检查它是否已经打开。如果不是简单地启动应用程序,而是它已经在运行(也称为第二个或更多实例)“简单地”传递输入参数(args 字符串数组)传递给第一个实例,那么它将适当地处理它。
这是我的程序.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.
}
}
}
Run Code Online (Sandbox Code Playgroud)
这只会(使用互斥锁)识别它是否已经打开,但(当然)它无法与主实例进行任何通信。
我已经尝试了很多东西,但我无法让它工作。
我试过这个但我真的不明白(在浪费了很多时间之后)如何放置我的“第一次”代码和“已经运行”的代码。
也试过MSMQ但我不能让它工作。 …