读书人

文件进程有关问题

发布时间: 2011-12-12 22:59:56 作者: rapoo

文件进程问题
我今天编程出现了一个问题。他说 文件“C:\check.txt”正由另一进程使用,因此该进程无法访问该文件,请大家指点指点,帮我修正下。
模块一: private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
{
StreamWriter ws;
ws = File.CreateText( "C:\\check.txt ");
ws.WriteLine( "1 ");
ws.Close();
}
else
{
StreamWriter ws;
ws = File.CreateText( "C:\\check.txt ");
ws.WriteLine( "0 ");
ws.Close();
}




}
模块2: private void Form1_Load(object sender, EventArgs e)
{
if (File.Exists(@ "C:\check.txt ") == true)

{
StreamReader rs = new System.IO.StreamReader(@ "C:\check.txt ", System.Text.Encoding.UTF8);
string s = rs.ReadLine();
if (s.Trim() == "0 ")
{
textBox2.Text = " ";
textBox3.Text = " ";
}
else
{


checkBox1.Checked = true;
}
rs.close();
}
}

[解决办法]
模块一: Mutex m = new Mutex(false, "MyMutex ");
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
m.WaitOne();
if (checkBox1.Checked == true)
{
StreamWriter ws;
ws = File.CreateText( "C:\\check.txt ");
ws.WriteLine( "1 ");
ws.Close();
}
else
{
StreamWriter ws;
ws = File.CreateText( "C:\\check.txt ");
ws.WriteLine( "0 ");
ws.Close();
}
m.ReleaseMutex();


}
模块2: Mutex m = new Mutex(false, "MyMutex ");
private void Form1_Load(object sender, EventArgs e)
{
m.WaitOne();
if (File.Exists(@ "C:\check.txt ") == true)

{
StreamReader rs = new System.IO.StreamReader(@ "C:\check.txt ", System.Text.Encoding.UTF8);
string s = rs.ReadLine();
if (s.Trim() == "0 ")
{
textBox2.Text = " ";
textBox3.Text = " ";
}
else
{
checkBox1.Checked = true;
}
rs.close();
}
m.ReleaseMutex();

}

[解决办法]
问题在rs.Close之前又触发了CheckedChanged事件,在CheckedChanged事件中又会再次建立这个文件,所以会报错,下面是修改之后的代码
private void Form1_Load(object sender, EventArgs e)
{
if (File.Exists(@ "C:\check.txt ") == true)

{
StreamReader rs = new System.IO.StreamReader(@ "C:\check.txt ", System.Text.Encoding.UTF8);
string s = rs.ReadLine();
rs.close();
if (s.Trim() == "0 ")
{
textBox2.Text = " ";


textBox3.Text = " ";
}
else
{
checkBox1.Checked = true;
}
}
}

读书人网 >C#

热点推荐