这个问题可能看起来有点模糊,但我们走了。
我正在阻止我的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;
}
是否可以将命令行参数传递给已在运行的应用程序?
答案 0 :(得分:3)
不,这是不可能的。您应该使用一些inter process communication技术。
答案 1 :(得分: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
ISingleInstanceApp
,SingleInstance.cs
,我也在我的应用类中实现了{{1}}。
感谢您的帮助!