Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用已运行的应用程序实例_C#_Winforms - Fatal编程技术网

C# 使用已运行的应用程序实例

C# 使用已运行的应用程序实例,c#,winforms,C#,Winforms,可能重复: 我有一个Winform应用程序,它以一个参数作为参数 static class Program { [STAThread] static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application

可能重复:

我有一个Winform应用程序,它以一个参数作为参数

static class Program
{

    [STAThread]
    static void Main(string[] args)
    {           
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Gauges(args));
    }
}
这个程序每天由另一个应用程序执行几次


是否可以检查我的程序是否已经运行,如果已经运行,我是否可以使用运行实例的最新参数?

您可以使用互斥来停止应用程序的多个副本的运行。这里有一篇关于使用互斥体的非常好的文章:


至于将参数传递给已经运行的进程,您需要实现某种形式的IPC来通知正在运行的实例新参数。您可以使用许多解决方案,如套接字、命名管道等。

您可以使用互斥来停止应用程序的多个副本的运行。这里有一篇关于使用互斥体的非常好的文章:

至于将参数传递给已经运行的进程,您需要实现某种形式的IPC来通知正在运行的实例新参数。您可以使用许多解决方案,如套接字、命名管道等

是否可以检查我的程序是否已经在运行

您可以在应用程序内部使用

bool alreadyPresent  =false;
using (Mutex mutex = new Mutex(true, "YourAppName", out alreadyPresent  ))
{
    if(alreadyPresent ) {
       //APP ALREADY PRESENT 
    }
}
是操作系统工件,因此,应用程序可执行文件的不同实例无法访问同一对象

我可以使用具有最新参数的运行实例吗

这取决于你如何管理你的应用程序。您可以使用一些IPC机制将所需参数传递给已经运行的进程

是否可以检查我的程序是否已经在运行

您可以在应用程序内部使用

bool alreadyPresent  =false;
using (Mutex mutex = new Mutex(true, "YourAppName", out alreadyPresent  ))
{
    if(alreadyPresent ) {
       //APP ALREADY PRESENT 
    }
}
是操作系统工件,因此,应用程序可执行文件的不同实例无法访问同一对象

我可以使用具有最新参数的运行实例吗


这取决于你如何管理你的应用程序。您可以使用一些IPC机制将所需参数传递给已经运行的进程

通过获取所有进程来实现检查,并将进程名称与正在启动的进程进行比较。如果列表中有,只需返回;。如果不是,那就开始吧it@t3hn00b只需使用互斥。那么就不需要检查所有进程了。@Lloyd是的,这是正确的-在我看到你的帖子之前,我对互斥类不太熟悉。获取所有进程并将进程名与正在启动的进程名进行比较,可能会重复或实现检查。如果列表中有,只需返回;。如果不是,那就开始吧it@t3hn00b只需使用互斥。那么就不需要检查所有进程了。@Lloyd是的,这是正确的-在看到您的帖子之前,我对互斥类不太熟悉。互斥构造函数的第三个参数可能是createdNew。如果它将参数设置为false,那么应用程序或其他使用相同互斥体名称的应用程序已经在运行。我理解互斥体。现在需要弄清楚IPC的内容。Thx.@Koen:可以用,但也有其他的。这只是一个例子。@Tigran-Thx。我来看看。互斥构造函数的第三个参数实际上是createdNew。如果它将参数设置为false,那么应用程序或其他使用相同互斥体名称的应用程序已经在运行。我理解互斥体。现在需要弄清楚IPC的内容。Thx.@Koen:可以用,但也有其他的。这只是一个例子。@Tigran-Thx。我来看看。