我正在为我的高级软件系统开发做一个问答游戏,我的代码很好,但是我无法运行我的代码

时间:2019-01-02 18:12:34

标签: c#

我的代码语法没有错,但是每当我尝试运行它时,都会说“该进程无法访问该文件,因为该文件正在被另一个进程使用”。我运行应用程序的唯一方法是从任务管理器中终止应用程序。请帮助我解释为什么会发生这种情况以及如何解决。

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课程

2 个答案:

答案 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();