【问题标题】:How to make a else if statement if Process.Start fails如果 Process.Start 失败,如何制作 else if 语句
【发布时间】:2016-07-29 15:16:29
【问题描述】:

所以我现在正在开发一个人工智能程序。对于我的一个命令,我正在使用 Process.Start 打开一个文件。而且我想知道如何根据 Process.Start 是否失败来创建 else if 语句。如果 Process.Start 失败,我希望它运行 else if 语句中的代码块。有谁知道怎么做?如果我听起来像个菜鸟或somthen,我很抱歉。我刚开始编码,我才 14 岁,所以我还不太了解。

        string r = e.Result.Text;



        if (r.Contains("your code"))
        {
            say("Opening up my code");
            Process.Start("C:/Users/Sukorow/Desktop/My Creations/Yuki Public Release/Yuki Public Release.sln");
        }

Here's a image of the Process.Start

【问题讨论】:

  • 请在问题本身中包含您的代码。要求人们打开一个新标签来查看文本的图像有点过分。
  • @BobKaufman - 在这种情况下,Process.Start方法确实,实际上返回true或false表示调用是否成功,见文档:@ 987654322@
  • 我投票决定将此问题作为题外话结束,因为询问指导,如何编写if 语句不是您应该在这里询问的编程问题类型。这不是一个教授编程的初学者教程网站。

标签: c# windows artificial-intelligence


【解决方案1】:

Process.Start 如果成功则返回 true,否则返回 false,因此您可以这样做:

var process = new Process()
{
       StartInfo = new System.Diagnostics.ProcessStartInfo()
       {
           FileName = "[your file]"
       }
};
if (!process.Start())
{
      // Handle the case where it didn't start
}

另外,作为补充说明,我不建议在代码中硬编码 .sln 文件的位置。如果您更改文件夹结构,它将破坏应用程序,并且您分发可执行文件的任何人都必须具有与您完全相同的文件夹结构,否则调用将失败。我建议创建一个 App.config 文件,请参阅以下文档: https://msdn.microsoft.com/en-us/library/ms184658.aspx

基本思想是你可以添加一个键值对来存储文件的位置——例如

<add key="folderName" value="C:\...."/>

这样你就可以修改它而无需重新编译。

【讨论】:

  • 感谢 EJoshuaS 的上述评论。它帮助了我。还有谁对你的答案投了反对票。
  • 很高兴我能帮上忙。
  • 我投了反对票,因为您的代码无法编译。 Process.Start 不返回 bool 它返回 Process
  • 是的,Matt Wilko 是正确的,它确实这么说。但我使用了你告诉我的使用 try 和 catch 并且效果很好。所以谢谢
【解决方案2】:

如果您使用Process实例 启动进程,则会返回一个bool,指示它是否已启动:

        Process proc = new Process();
        proc.StartInfo = new ProcessStartInfo("Notepad.exe");
        bool startedOk = proc.Start();

您还需要将其包装在 try catch 块中,因为尝试启动不存在的进程会引发异常

【讨论】:

    【解决方案3】:

    尝试一下。

    {
        try
        {
            System.Diagnostics.Process.Start(@"C:\Program Files(x86)\Notepad++\notepad++.exe"); 
    
        }
        catch (Exception)
        {
            MessageBox.Show("Make sure you have the application 
            installed.", "Error", MessageBoxButtons.OK, 
            MessageBoxIcon.Information);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-19
      • 1970-01-01
      • 2019-04-09
      • 2022-01-21
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 2021-11-28
      相关资源
      最近更新 更多