G
Guest
My program generates a log file for every event that happens in the program.
So, I open the file and keep it open till the end. This is how I open the
file for writing:
<CODE>
public CLogHandler()
{
this.m_fsLog = new FileStream(strTodaysLogFile, System.IO.FileMode.Append,
System.IO.FileAccess.Write, System.IO.FileShare.Read);
this.m_swLog = new StreamWriter(this.m_fsLog);
if(this.m_swLog != null) this.m_swLog.AutoFlush = true;
}
pubic WriteLogMessage()
{
if(this.m_swLog != null) this.m_swLog.Write("[" +
DateTime.Now.ToString("HH:mm:ss") + "] " + aMsg + Environment.NewLine);
}
</CODE>
One of the requirements is to display the current log file contents in a
child form. So, I open the log file for reading like this :
<CODE>
System.IO.FileStream fs = new FileStream(this.m_strCurrentFileName,
System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read);
System.IO.StreamReader sr = new StreamReader(fs);
while(sr.Peek() > -1) this.DisplayLogText(sr.ReadLine() +
Environment.NewLine);
fs.Close();
</CODE>
As you see, when I open the file for writing, I'm granting FileShare.Read,
which means other processes can open the file for reading. But when I try to
open the file for reading, it gives IOException that the file is being used
by another process.
So, how can we write and read to and from a file simultaneously in the same
program (ofcourse, without stopping the write process)??
So, I open the file and keep it open till the end. This is how I open the
file for writing:
<CODE>
public CLogHandler()
{
this.m_fsLog = new FileStream(strTodaysLogFile, System.IO.FileMode.Append,
System.IO.FileAccess.Write, System.IO.FileShare.Read);
this.m_swLog = new StreamWriter(this.m_fsLog);
if(this.m_swLog != null) this.m_swLog.AutoFlush = true;
}
pubic WriteLogMessage()
{
if(this.m_swLog != null) this.m_swLog.Write("[" +
DateTime.Now.ToString("HH:mm:ss") + "] " + aMsg + Environment.NewLine);
}
</CODE>
One of the requirements is to display the current log file contents in a
child form. So, I open the log file for reading like this :
<CODE>
System.IO.FileStream fs = new FileStream(this.m_strCurrentFileName,
System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read);
System.IO.StreamReader sr = new StreamReader(fs);
while(sr.Peek() > -1) this.DisplayLogText(sr.ReadLine() +
Environment.NewLine);
fs.Close();
</CODE>
As you see, when I open the file for writing, I'm granting FileShare.Read,
which means other processes can open the file for reading. But when I try to
open the file for reading, it gives IOException that the file is being used
by another process.
So, how can we write and read to and from a file simultaneously in the same
program (ofcourse, without stopping the write process)??