4

Form1 の上部で、次のことを行いました。

private Process zipFileDirectoryProcess;

コンストラクターで私がした:

zipFileDirectoryProcess = new Process();
zipFileDirectoryProcess.StartInfo.FileName = "explorer.exe";
zipFileDirectoryProcess.StartInfo.CreateNoWindow = true;
zipFileDirectoryProcess.EnableRaisingEvents = true;
zipFileDirectoryProcess.Exited += new EventHandler(zipFileDirectoryProcess_Exited);

次に、ボタンクリックイベントから呼び出すメソッドがあります:

private void Compress()
{
  zipFileDirectoryProcess.StartInfo.Arguments = zipFileDirectoryProcess.StartInfo.Arguments = "/select," + Path.GetFullPath(t);
  zipFileDirectoryProcess.Start();
  zipFileDirectoryProcess.WaitForExit();
  this.TopMost = true;
}

そして、一番下の Exited イベント:

private void zipFileDirectoryProcess_Exited(object sender, EventArgs e)
        {
            this.BeginInvoke(new MethodInvoker(delegate()
            {
                this.TopMost = false;
            }));
        }

私がやりたかったのは、ウィンドウ/プロセスを閉じてExitedイベントを実行した場合にのみ、メソッドで開始した後にプロセスウィンドウを閉じたときだけです。

問題は、プロセスが 2 ~ 3 秒後に開始されると、Exited イベントに自動的にジャンプすることです。

どうすれば修正できますか?試した例ではわかりません。この行を追加しようとしました:

zipFileDirectoryProcess.WaitForExit();

しかし、効果はありません。

4

2 に答える 2

0

Windows エクスプローラーで出力フォルダーをユーザーに表示するには、次のようにするだけで十分です。

Process.Start("explorer.exe", OutputDir);
于 2013-08-04T23:46:21.483 に答える