如何检查文件是否已打开?

时间:2012-09-05 23:38:38

标签: c# file process

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

以上打开记事本中的文本文件。它包含我的应用程序的错误日志。

我不想让用户打开此文件的倍数。因此,我不想让他/她再次单击该按钮并打开同一文件的另一个窗口。

如何检查此文件是否已打开?注意:我不想关闭(或所有)notepad.exe进程,因为用户可能会打开记事本进程,而不是我的应用程序文件(在文件打开时使用notepad.exe)。

同样,我如何检查我打开的流程是否已经打开?

2 个答案:

答案 0 :(得分: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.HasExited状态来禁用该按钮,以便不会引发Click事件。

答案 1 :(得分:-1)

在此处查看如何检查文件是否已打开(使用try,catch块): Check if a file is open