首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

文件进程有关问题

2011-12-12 
文件进程问题我今天编程出现了一个问题。他说文件“C:\check.txt”正由另一进程使用,因此该进程无法访问该文

文件进程问题
我今天编程出现了一个问题。他说     文件“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;
}
}
}

热点排行