gpt4 book ai didi

c# - Application.Restart 不传回参数

转载 作者:太空狗 更新时间:2023-10-29 21:51:37 25 4
gpt4 key购买 nike

这是一个 ClickOnce 应用程序。根据documentation , "如果您的应用程序最初在首次执行时提供了命令行选项,则 Restart 将使用相同的选项再次启动该应用程序。"。但我不知道这是否适用于 ClickOnce 应用程序。如果是这样,我做错了什么?

这是我的代码:

public Form1()
{
InitializeComponent();
textBox1.Text = string.Join(Environment.NewLine, GetCommandLineFile());
}

private static string[] GetCommandLineFile()
{
if (AppDomain.CurrentDomain != null &&
AppDomain.CurrentDomain.SetupInformation != null &&
AppDomain.CurrentDomain.SetupInformation.ActivationArguments != null &&
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData != null &&
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData.Any())
{
return AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
}
else return new string[] { };
}

private void button1_Click(object sender, EventArgs e)
{
Application.Restart();
}

我将我的应用程序与 .abc 扩展名相关联,当我双击我的 .abc 文件时,应用程序将以文件名作为唯一参数启动,但是然后当我重新启动时(通过按 button1),GetCommandLineFile() 将返回一个空数组。

最佳答案

我相信 Application.Restart 是为标准命令行参数而不是 ClickOnce 应用程序如何处理它而设计的。

查看 Microsoft 的 Application.Restart 代码,他们明确检查应用程序是否为 ClickOnce 应用程序,然后在没有传递任何参数的情况下重新启动它。任何其他应用程序都会得到 Environment.GetCommandLineArgs() 解析并发送到新进程。

我认为更好的解决方案是简单地启动一个新进程,而不是将参数写入文件:

"path\Application Name.appref-ms" arg1,arg2,arg3

这样,当您的应用程序启动时,GetCommandLineFile() 应该再次获取参数。

关于c# - Application.Restart 不传回参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8767325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com