Я использую C # в приложении и у меня возникают проблемы с блокировкой файла.
Кусок кода делает это,
while (true)
{
Read a packet from a socket (with data in it to add to the file)
Open a file // one of these randomly throws an exception saying that the file is locked
Writes data to it
Close a file
}
Но в процессе файл становитсязаперта.Я не совсем понимаю, как, мы определенно отлавливаем и сообщаем об исключениях, поэтому я не вижу, как файл не закрывается каждый раз.
Мое лучшее предположение, что что-то еще открывает файл,Это вряд ли будет другое приложение, но это может быть другая тема, но я просто хочу доказать это в любом случае.Может ли кто-нибудь предоставить кусок кода, чтобы проверить, открыт ли файл, и если да, сообщите, какой processId и threadId открыл файл.
Например, если у меня был этот код,
StreamWriter streamWriter1 = new StreamWriter(@"c:\logs\test.txt");
streamWriter1.WriteLine("Test");
// code to check for locks??
StreamWriter streamWriter2 = new StreamWriter(@"c:\logs\test.txt");
streamWriter1.Close();
streamWriter2.Close();
Это вызовет исключение, потому что файл блокируется, когда мы пытаемся открыть его во второй раз.Так где же комментарий, который я мог бы поместить туда, чтобы сообщить, что текущее приложение (идентификатор процесса) и текущий поток (идентификатор потока) заблокировали файл?
Спасибо.