我的代码语法没有错,但是每当我尝试运行它时,都会说“该进程无法访问该文件,因为该文件正在被另一个进程使用”。我运行应用程序的唯一方法是从任务管理器中终止应用程序。请帮助我解释为什么会发生这种情况以及如何解决。
private void btnLogin_Click(object sender, EventArgs e)
{
if (File.Exists("users.txt"))
{
string[] users = File.ReadAllLines("users.txt");
bool userFound = false;
foreach (string user in users)
{
string[] splitDetails = user.Split('~');
string username = splitDetails[1];
string password = splitDetails[2];
if ((txtBoxUsername.Text == username) && (txtBoxPassword.Text == password))
{
userFound = true;
break;
}
}
if (userFound)
{
Hide();
HomeForm home = new HomeForm();
home.Show();
}
else
{
MessageBox.Show("User details are incorrect",
"Incorrect details entered");
}
}
else
{
MessageBox.Show("No users have been registered", "No users");
}
}
private void btnRegister_Click(object sender, EventArgs e)
{
Hide();
RegisterForm registerForm = new RegisterForm();
registerForm.Show();
}
该应用程序是我的一级软件系统开发课程,我正在用c#进行编码。在过去的5个月里,我只学习c#,所以我还是一个初学者。我已经尝试在堆栈溢出和其他网站中找到我的问题的答案。
我希望我的应用程序在按Run时启动,但是却出现一个对话框,提示:
错误无法将文件“ obj \ Debug \ SSD AS2 coursework.exe”复制到“ bin \ Debug \ SSD AS2 coursework.exe”。该进程无法访问文件“ bin \ Debug \ SSD AS2 coursework.exe”,因为它正在被另一个进程使用。
SSD AS2课程
答案 0 :(得分:1)
在完成应用程序时检查是否要关闭应用程序的所有窗口。
在将要完成您的应用程序的所有事件中,您都必须使用Application.Exit()
。
您可以在Documentation
上阅读更多内容答案 1 :(得分:0)
似乎您尝试打开的文件正被另一个进程使用,请尝试关闭您的文本编辑器或另一个写入该文件的程序。
仍然可以通过使用FileShare.ReadWrite来解决该问题,并使用多个进程中的文件,例如以下代码:
FileStream fileStream = new FileStream("c:\users.txt", FileMode.Open,
FileAccess.Read, FileShare.ReadWrite);
StreamReader fileReader = new StreamReader(fileStream);
while (!fileReader.EndOfStream)
{
string user = fileReader.ReadLine();
string[] splitDetails = user.Split('~');
// the rest of the user logic in here...
}
fileReader.Close();
fileStream.Close();