【问题标题】:How to start a new application instance from within the application?如何从应用程序内部启动一个新的应用程序实例?
【发布时间】:2012-08-08 05:29:55
【问题描述】:

当用户单击按钮时,我想启动我的应用程序的新实例。

当我使用这段代码时,它会抛出一个错误:

new Application().Run();

不能在同一个 AppDomain 中创建多个 System.Windows.Application 实例。

【问题讨论】:

  • 到目前为止你尝试过什么?您能否提供更多解释,请向他展示您的程序的新副本是什么意思?
  • 你能不能说的详细点,我不明白你的问题。

标签: c# wpf


【解决方案1】:

我找到了解决办法

Process p = new Process();
p.StartInfo.FileName = 
    System.Reflection.Assembly.GetExecutingAssembly().Location;
p.Start();

【讨论】:

  • 这在 .Net Core 上不起作用。出于某种原因,除了可执行文件之外,当构建解决方案时,还会创建一个与 .exe 文件同名的 .dll 文件,并且调用 System.Reflection.Assembly.GetExecutingAssembly().Location; 返回的是 .dll 而不是 .exe 文件。我解决了将 Process.GetCurrentProcess().MainModule.FileName 的值分配给 FileName 属性的问题。
【解决方案2】:

与另一个进程:

【讨论】:

  • 谢谢,但是当我使用app.Run() 时,给我这个错误Cannot create more than one System.Windows.Application instance in the same AppDomain. 这是我的代码`Application application = new Application(); application.Run();`
  • @tito11:正如我所说:可能会被禁止。创建一个新进程。
【解决方案3】:
Process p = new Process();
p.StartInfo.FileName = Application.ExecutablePath;
p.Start();

这是在winforms中,但在WPF中可能类似。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    相关资源
    最近更新 更多