Я запускаю Console_Application-A, в котором я вызываю другой Console_Application-B (в котором я создаю журнал файл для ошибки/исключения).IOException: процесс не может получить доступ к файлу «путь к файлу», потому что он используется другим процессом в консольном приложении в C#
Но когда я запускаю Console_Application-B отдельно, он работает нормально, но когда я запускаю Console_Application-A, в то время я получаю исключение, когда приложение должно записывать ошибку в файле журнала. (Error.txt).
IOException: Процесс не может получить доступ к файлу «error.txt», потому что используется другим процессом
, пожалуйста, руководство меня в этом вопросе.
Код для написания протокола ошибок
public static bool IsFileLocked(FileInfo file)
{
FileStream stream = null;
try
{
stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None);
}
catch (IOException)
{
return true;
}
finally
{
if (stream != null)
stream.Close();
}
return false;
}
catch (Exception e)
{
string filePath =Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\Error.txt";
FileInfo FInfo = new FileInfo(filePath);
var FileState = IsFileLocked(FInfo);
while (FileState){
FileState = IsFileLocked(FInfo);
}
if (!FileState){
using (StreamWriter writer = new StreamWriter(filePath, true))
{
writer.WriteLine("Message :" + e.Message + "<br/>" + Environment.NewLine + "StackTrace :" + e.StackTrace +"" + Environment.NewLine + "Date :" + DateTime.Now.ToString());
writer.WriteLine(Environment.NewLine + "-----------------------------------------------------------------------------" + Environment.NewLine);
writer.Dispose();
}
}
}
Оба приложения обращаются к одному файлу в то же время? – Sybren
Добавьте свой код для записи в файл журнала. –
Нет Оба приложения используют разные файлы –