Asp.net IOException:进程无法访问文件';文件名';因为它正被另一个进程使用
我的asp.net项目中有以下代码:Asp.net IOException:进程无法访问文件';文件名';因为它正被另一个进程使用,asp.net,freetextbox,Asp.net,Freetextbox,我的asp.net项目中有以下代码: protected void btnSave_Click(object sender, EventArgs e) { try { using (StreamWriter sw = File.CreateText(Server.MapPath(@"~/AboutUs.txt"))) { sw.Write(FreeTextBox1.Text);
protected void btnSave_Click(object sender, EventArgs e)
{
try
{
using (StreamWriter sw = File.CreateText(Server.MapPath(@"~/AboutUs.txt")))
{
sw.Write(FreeTextBox1.Text);
sw.Close();
sw.Dispose();
lblError.Text = "تغییرات با موفقیت ذخیره شد.";
lblError.CssClass = "success";
}
}
catch (Exception ex)
{
lblError.Text = "خطایی روی داده است!" + "\n" + ex.ToString();
lblError.CssClass = "error";
}
finally
{
lblError.Visible = true;
}
}
当我点击btnSave
时,有时(并非总是)会发生以下错误:
IOException:进程无法访问文件“filename”,因为其他进程正在使用该文件
为什么?您只需在看到windows任务管理器-->进程后运行应用程序,运行的任何notepad.exe只需右键单击,然后单击“结束进程” 当两个人同时按下按钮时,当第二个人进入文件时,第一个人是否仍在写入文件?此外,我不确定在using语句中处理streamwriter时会发生什么;using语句已调用dispose方法。在文档中,我也没有发现需要调用close方法。我还会将lblError.xxxx代码移到using语句之外。完整地说:您也可以使用
File.writealText()
方法。首先尝试@Michel的建议,我还认为问题最可能的原因是多次单击按钮(实现某种锁定机制来防止)。此外,您不希望将完整的stacktrace显示为错误消息,并且“\n”不能在网页上用作换行符,请改用“”。祝你好运