Я думаю, что операционная система хочет подождать, пока дескриптор файла не сможет свободно использоваться, а затем записать в файл. В этом случае вам следует попытаться получить дескриптор файла, перехватить исключение, а если исключение связано с тем, что к файлу обращается другой процесс, подождите немного и повторите попытку.
public static void WriteLine(string text)
{
bool success = false;
while (!success)
{
try
{
using (var fs = new FileStream(Filename, FileMode.Append))
{
// todo: write to stream here
success = true;
}
}
catch (IOException)
{
int errno = Marshal.GetLastWin32Error();
if(errno != 32) // ERROR_SHARING_VIOLATION
{
// we only want to handle the
// "The process cannot access the file because it is being used by another process"
// exception and try again, all other exceptions should not be caught here
throw;
}
Thread.Sleep(100);
}
}
}