传递参数给应用程序。

3
这个问题可能有点模糊,但我们来详细讨论一下。
我正在防止我的wpf应用程序出现多个实例,如下所示:
Process proc = Process.GetCurrentProcess();
if (Process.GetProcessesByName(proc.ProcessName).Length > 1)
{
    Application.Current.Shutdown();
    return;
}

if (e.Args != null && e.Args.Count() > 0)
{
    this.Properties["Magnet"] = e.Args;
}

已经运行的应用程序是否可以传递命令行参数?


1
也许这个能帮到你。 - Bali C
1
我们使用WCF(在已发布的某些链接中提到,因此我不会再次链接)。起初使用WCF可能有些棘手,但它是(依我之见)实现此类进程间通信的最佳方式。 - Matthew Watson
2
检查此链接http://stackoverflow.com/questions/4541354/simple-communication-between-2-instances-of-application - Prasanth V J
感谢所有出色的评论和回答,对我非常有帮助。非常感谢! - leko
2个回答

4
不可能。您应该使用一些进程间通信技术。请参考此处了解更多信息。

是的,有可能的解决方案——命名管道、远程操作等。 - Sergey Berezovskiy

2

如果您有兴趣,我决定在我的App.Xaml.cs中使用以下代码:

[STAThread]
public static void Main()
{
    if (SingleInstance<App>.InitializeAsFirstInstance(UNIQUE))
    {
        var application = new App();
        application.InitializeComponent();
        application.Run();
        SingleInstance<App>.Cleanup();
    }
}

public bool SignalExternalCommandLineArgs(IList<string> args)
{
    // Use arguments
    return true;
}

UNIQUE是一个20个字符的常量字符串。

SingleInstance<App>.Cleanup()继承自ISingleInstanceApp,该接口在SingleInstance.cs中定义,我还在我的应用程序类中实现了ISingleInstanceApp

感谢所有的帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接