You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#登录验证异常:3次失败后未关闭程序却进入菜单页

登录验证程序问题排查与修复

问题核心

连续3次登录失败后,程序虽提示5秒后关闭,但实际会跳转到Menu页面,未执行关闭操作。

问题原因

当3次登录失败的循环执行完毕后,代码执行了Thread.Sleep(5000),但之后没有终止程序的逻辑,会继续执行AfterLoop标签后的代码,所以会进入Menu页面。

修复方案

在Thread.Sleep(5000)之后添加Environment.Exit(0),强制终止程序,这样睡眠5秒后就会直接关闭,不会走到后续的Menu代码:

Console.WriteLine("U heeft geen poginen meer, de applicatie sluit af na 5 seconden");
Thread.Sleep(5000);
Environment.Exit(0); // 添加这行代码退出程序

其他代码优化建议

  1. 移除无用引用:代码顶部很多using未被使用(比如System.Configuration、System.IO、System.Net.NetworkInformation等),删除这些冗余引用可以减少编译负担,让代码更整洁。
  2. 替换goto语句:goto会让代码逻辑可读性变差,建议用布尔变量控制流程:
    bool isLoggedIn = false;
    for (int i = 0; i < 3; i++)
    {
        // 输入逻辑...
        if (inlognaam == gebruikersnaam && password == wachtwoord)
        {
            Console.WriteLine("Succes");    
            Console.WriteLine("Druk een knop in om door tegaan");
            Console.ReadLine();
            isLoggedIn = true;
            break;
        }
        // 错误提示...
    }
    
    if (isLoggedIn)
    {
        Console.Clear();
        Console.WriteLine("Menu");
        Console.ReadKey();
    }
    else
    {
        Console.WriteLine("U heeft geen poginen meer, de applicatie sluit af na 5 seconden");
        Thread.Sleep(5000);
        Environment.Exit(0);
    }
    
  3. 隐藏密码输入:当前密码是明文输入,不安全,可改用Console.ReadKey(true)实现隐藏输入:
    Console.WriteLine("Voer wachtwoord in:");
    StringBuilder wachtwoordBuilder = new StringBuilder();
    while (true)
    {
        ConsoleKeyInfo key = Console.ReadKey(true);
        if (key.Key == ConsoleKey.Enter)
        {
            Console.WriteLine();
            break;
        }
        wachtwoordBuilder.Append(key.KeyChar);
        Console.Write("*");
    }
    string wachtwoord = wachtwoordBuilder.ToString();
    
  4. 使用字符串插值:替换传统的字符串拼接,让代码更简洁易读,比如:
    Console.WriteLine($"U heeft nog {3 - i} pogingen");
    

完整优化后代码

using System;
using System.Text;
using System.Threading;

namespace Gimpies
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string inlognaam = "inkoop";
            string password = "Gimpies_Inkoop";
            bool isLoggedIn = false;

            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine($"U heeft nog {3 - i} pogingen");
                Console.WriteLine("Voer gebruikersnaam in:");
                string gebruikersnaam = Console.ReadLine();

                Console.WriteLine("Voer wachtwoord in:");
                StringBuilder wachtwoordBuilder = new StringBuilder();
                while (true)
                {
                    ConsoleKeyInfo key = Console.ReadKey(true);
                    if (key.Key == ConsoleKey.Enter)
                    {
                        Console.WriteLine();
                        break;
                    }
                    wachtwoordBuilder.Append(key.KeyChar);
                    Console.Write("*");
                }
                string wachtwoord = wachtwoordBuilder.ToString();

                if (inlognaam == gebruikersnaam && password == wachtwoord)
                {                                      
                    Console.WriteLine("Succes");    
                    Console.WriteLine("Druk een knop in om door te gaan");
                    Console.ReadLine();
                    isLoggedIn = true;
                    break;
                }
                else
                {
                    Console.WriteLine("Gebruikersnaam of wachtwoord is onjuist, probeer opnieuw.");
                }
            }

            if (isLoggedIn)
            {
                Console.Clear();
                Console.WriteLine("Menu");
                Console.ReadKey();
            }
            else
            {
                Console.WriteLine("U heeft geen pogingen meer, de applicatie sluit af na 5 seconden");
                Thread.Sleep(5000);
                Environment.Exit(0);
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者Gijs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:37:28