在 C# 中,在 X 秒后制作 cmd

本文关键字:cmd | 更新日期: 2023-09-27 18:34:16

我正在尝试在 X 秒后关闭控制台窗口,下面是一个例子:

我的程序显示"输入一个数字:">

然后我输入"1945">

输入数字后,控制台显示"已解锁"。

问题是我希望控制台在 3-4 秒后重新运行原始消息,以便它只是连续循环执行此操作。

在下面,我包含了当前的代码,并注释了我希望它在哪里做我想要的事情。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace portkod
{
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Kod:");
        int kod = Convert.ToInt32(Console.ReadLine());
        DateTime tiden = DateTime.Now;

        if (kod == 1946)
        {
            Console.Clear();
            //After this message comes up I want the program to ask for "Kod:"
            //again after like 3-4 seconds.
            Console.WriteLine("Unlocked!");
        }
        else if (kod != 1946)
        {
            Console.Clear();
            Console.WriteLine("Locked!");
        }
        Console.ReadLine();
    }
}
}

在 C# 中,在 X 秒后制作 cmd

你可以

这样做。

GetIntFromConsole 从控制台读取,并且仅在给定有效整数时返回 nr,如果未再次询问。

只要用户在 1946 年没有给出,程序就会在 4 秒后重复问题,并标记"锁定">

using System;
using System.Threading;
namespace Repeat
{
    class Program
    {
        static int GetIntFromConsole(string label)
        {
            int result;
            string input;
            do
            {
                Console.Write("{0}: ", label);
                input = Console.ReadLine();
            } while (!int.TryParse(input, out result));
            return result;
        }
        static void Main(string[] args)
        {
            int result;
            result = GetIntFromConsole("Kod");
            while (result != 1946)
            {
                Console.WriteLine("Locked");
                Thread.Sleep(4000); // 4 seconds = 4000 milliseconds
                result = GetIntFromConsole("Kod");
            } 
            Console.WriteLine("Unlocked");
        }
    }
}

根据要求,我将尝试解释更多内容

GetIntFromConsole 可以从程序内部的任何位置调用,并且只会返回一个有效的解析整数,这意味着空字符串或数字以外的任何内容都将无法正确解析,用户将不得不重试

这里使用的循环是 do { this logic} 而 (满足条件(

这意味着,当你使用 do/while 循环时,你将始终进入这个循环,直到 while 之后的条件返回 false

主 中的 while 循环首先检查一个条件,如果这个条件为真,它就会进入循环,如果不是,它会跳到 Console.WriteLine("Unlocked"(。

如果您想运行下面的评论中提到的连续循环,您可以通过以下方式运行它:

static void Main(string[] args)
{
    int result;
    while (true)  // always true, it will always repeat
    {
        result = GetIntFromConsole("Kod");
        while (result != 1946)
        {
            Console.WriteLine("Locked");
            Thread.Sleep(4000); // 4 seconds = 4000 milliseconds
            result = GetIntFromConsole("Kod");
        } 
        Console.WriteLine("Unlocked");
        Thread.Sleep(4000);
    }
}

这个新的 while 循环将循环,直到您发出 break; 语句,因为它会从 on 再次重新启动逻辑: result = GetIntFromConsole("Kod");您的结果将被重新评估,您可以再次锁定/解锁屏幕几次;)

我希望这是一个足够的解释,我不太喜欢老师:)

您可以使用 Thread.Sleep 等待一段时间。

static void Main(string[] args)
{
    while (getKod() != 1946)
    {
        System.Threading.Thread.Sleep(3000);
    }
    Console.WriteLine("Unlocked");
}

static int getKod()
{
    Console.WriteLine("Kod:");
    int kod;
    Int32.TryParse(Console.ReadLine(), out kod);
    return kod;
}
相关文章:
  • 没有找到相关文章