/// 
/// Waits until a file can be opened with write permission
/// 
public static void WaitReady(string fileName)
{
   while (true)
   {
       try
       {
           using (Stream stream = System.IO.File.Open(fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
           {
               if (stream != null)
               {
                   System.Diagnostics.Trace.WriteLine(string.Format("Output file {0} ready.", fileName));
                   break;
               }
           }
       }
       catch (FileNotFoundException ex)
       {
           System.Diagnostics.Trace.WriteLine(string.Format("Output file {0} not yet ready ({1})", fileName, ex.Message));
       }
       catch (IOException ex)
       {
           System.Diagnostics.Trace.WriteLine(string.Format("Output file {0} not yet ready ({1})", fileName, ex.Message));
       }
       catch (UnauthorizedAccessException ex)
       {
           System.Diagnostics.Trace.WriteLine(string.Format("Output file {0} not yet ready ({1})", fileName, ex.Message));
       }
       Thread.Sleep(500);
   }
}
 
Comments