When I execute the code below, I get the common exception The process cannot access the file *filePath* because it is being used by another process. 
What is the most efficient way to allow this thread to wait until it can safely access this file?
Assumptions:
- the file has just been created by me, so it is unlikely that another app is accessing it.
- more than one thread from my app might be trying to run this code to append text to the file.
:
 using (var fs = File.Open(filePath, FileMode.Append)) //Exception here
 {
     using (var sw = new StreamWriter(fs))
     {
         sw.WriteLine(text);
     }
 }
So far, the best that I have come up with is the following. Are there any downsides to doing this?
    private static void WriteToFile(string filePath, string text, int retries)
    {
        const int maxRetries = 10;
        try
        {
            using (var fs = File.Open(filePath, FileMode.Append))
            {
                using (var sw = new StreamWriter(fs))
                {
                    sw.WriteLine(text);
                }
            }
        }
        catch (IOException)
        {
            if (retries < maxRetries)
            {
                Thread.Sleep(1);
                WriteToFile(filePath, text, retries + 1);
            }
            else
            {
                throw new Exception("Max retries reached.");
            }
        }
    }
 
     
    