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.HasExited状态来禁用按钮,以便不引发 Click 事件。

于 2012-09-06T00:03:05.140 回答
-1

在此处查看如何检查文件是否已打开(通过使用 try、catch 块): 检查文件是否已打开

于 2012-09-05T23:57:07.110 回答