有一个winforms应用程序等待几分钟后再继续

时间:2014-01-13 18:42:04

标签: vb.net winforms

我在Stack Overflow上看到了一些关于使用Timer类来做我想做的事情的引用,但我不相信它是解决这个问题的正确方法。

基本上,我有一个按钮(在.NET 4.0中),当点击它时会经历一些不同的子程序并做某些事情:

  • 重启某些服务
  • 启动自动完成的命令行应用程序
  • 启动第二个自动完成的命令行应用程序
  • 启动第三个自动完成的命令行应用程序

我现在遇到的问题是程序只是通过每个事情并尽快将其解雇 - 除了第三个命令行应用程序必须仅在第一个命令之后才会触发三个完成。

我在代码中进行了sleep调用,除了这冻结了UI,我在这个应用程序上有一个状态栏,我想要更新,让用户知道正在发生的事情。

我在想一个Timer对象,但我不确定在做下一件事之前是否会导致暂停。

我正在使用Process.Start方法来启动命令行应用程序,因此它实际上不会引发事件。我应该让我的子程序引发一个事件然后让第三个Process.Start方法等待该事件在它发生之前触发吗?

1 个答案:

答案 0 :(得分:0)

这个小小的片段可能对您有所帮助。试着理解并实现自己的代码。

     try
     {
        Process myProcess;
        myProcess = Process.Start("Notepad.exe");
        while (true)
        {
           if (!myProcess.HasExited)
           {
               // Discard cached information about the process.
               myProcess.Refresh();
               // Print working set to console.
               Console.WriteLine("Physical Memory Usage: " 
                                    + myProcess.WorkingSet.ToString());
               // Wait 2 seconds.
               Thread.Sleep(2000);
           }
           else {
               break;
           } 
        }

        // Close process by sending a close message to its main window.
        myProcess.CloseMainWindow();
        // Free resources associated with process.
        myProcess.Close();

     }
     catch(Exception e)
     {
        Console.WriteLine("The following exception was raised: ");
        Console.WriteLine(e.Message);
     }