小编Ale*_* DG的帖子

将参数传递给同一应用程序的另一个实例

我的小应用程序出现严重问题;基本上很容易理解:

我的软件,当打开时,做它的事情。

我想专注于打开另一个实例(我的意思是再次打开 .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但我不能让它工作。 …

c# arguments msmq pipe instance

5
推荐指数
1
解决办法
2776
查看次数

标签 统计

arguments ×1

c# ×1

instance ×1

msmq ×1

pipe ×1