Como verificar se um arquivo está em uso?

Existe alguma maneira de testar primeiro se um arquivo está em uso antes de tentar abri-lo para leitura? Por exemplo, esse bloco de código lançará uma exceção se o arquivo ainda estiver sendo gravado ou considerado em uso:

try
{
    FileStream stream = new FileStream(fullPath, FileMode.Open, FileAccess.Read, FileShare.Read);
}
catch (IOException ex)
{
    // ex.Message == "The process cannot access the file 'XYZ' because it is being used by another process."
}

Eu olhei ao redor e o melhor que eu posso encontrar é fazer algum tipo de pesquisa com uma tentativa por dentro, e isso pareceassim hacky. Eu esperaria que houvesse algo sobreSystem.IO.FileInfo mas não há.

Alguma idéia sobre um caminho melhor?

questionAnswers(2)

yourAnswerToTheQuestion