Я делаю викторину для моего уровня разработки программного обеспечения, и мой код в порядке, но я не могу запустить свой код

Вопрос задан: 11 месяцев назад Последняя активность: 11 месяцев назад
up -2 down

В синтаксисе моего кода нет ничего неправильного, но всякий раз, когда я пытаюсь его запустить, он говорит: «Процесс не может получить доступ к файлу, потому что он используется другим процессом». Единственный способ, которым я запускаю свое приложение, - это завершение моего приложения из диспетчера задач. Пожалуйста, помогите мне, объяснив, почему это происходит и как это исправить.

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#. Я только изучал c # в течение прошлых 5 месяцев, таким образом, я все еще новичок. Я уже пытался найти ответ на мою проблему в переполнении стека и других веб-сайтов.

Я ожидаю, что мое приложение запустится, когда я нажму на кнопку run, но вместо этого у меня появится диалоговое окно с надписью:

Ошибка Не удалось скопировать файл «obj \ Debug \ SSD AS2 coursework.exe» в «bin \ Debug \ SSD AS2 coursework.exe». Процесс не может получить доступ к файлу «bin \ Debug \ SSD AS2 coursework.exe», так как он используется другим процессом.
SSD AS2 курсовая работа

c#

2 ответа

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Реклама

up 1 down

Проверьте, закрываете ли вы все окна своего приложения при финализации приложения. Вы должны использовать Application.Exit() в любых событиях, которые собираются завершить ваше приложение.

Вы можете прочитать больше на Документация

up 0 down

Кажется, что файл, который вы пытаетесь открыть, используется другим процессом, который пытается закрыть ваш текстовый редактор или другую программу, пишущую в этот файл.

все еще возможно решить эту проблему с помощью 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();