1
private void btnViewErrorLogFile_Click(object sender, EventArgs e)
{
    errorLogFileProcess = Process.Start(AppVars.ErrorLogFilePath);
}

上記はメモ帳でテキストファイルを開きます。アプリケーションのエラー ログが含まれています。

ユーザーがこのファイルを複数開くことを許可したくありません。そのため、もう一度ボタンをクリックして同じファイルの別のウィンドウを開いてもらいたくありません。

このファイルが開いているかどうかを確認するにはどうすればよいですか? 注:アプリケーションファイル(ファイルが開いているときにnotepad.exeを使用する)以外の何かのためにユーザーがメモ帳プロセスを開いている可能性があるため、(またはすべての)notepad.exeプロセスを閉じたくありません。

繰り返しますが、開いたプロセスが既に開いているかどうかを確認するにはどうすればよいですか?

4

2 に答える 2

2

あなたの質問をもう一度読み直しました。

ユーザーがメモ帳のアクティブなインスタンス (起動したもの) を閉じてから再度開くことを許可する場合は、errorLogFileProcessインスタンスを保持してから、コマンドを許可する前に再確認します。

Process errorLogFileProcess;

private void btnViewErrorLogFile_Click(object sender, EventArgs e)
{
    if (errorLogFileProcess != null)
    {
        // Process was launched previously; check if exited.
        if (!errorLogFileProcess.HasExited)
        {
            throw new Exception("Can't launch until first one closed.");
        }
    }

    errorLogFileProcess = Process.Start(AppVars.ErrorLogFilePath);
}

errorLogFileProcess.HasExitedClick イベントが発生しないように、状態を使用してボタンを無効にすることもできます。

于 2012-09-06T00:03:05.140 に答える
-1

ファイルが既に開いているかどうかを確認する方法を確認してください (try、catch ブロックを使用): ファイルが開いているかどうかを確認する

于 2012-09-05T23:57:07.110 に答える