在C#中使用X秒后制作cmd?

0 c# visual-studio-2010 visual-studio visual-studio-2012 visual-studio-2013

我试图在X秒后关闭控制台窗口,这是一个例子:

我的程序说"键入数字:"

然后我键入"1945"

输入数字后控制台显示"Unlocked".

问题是我希望控制台在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();
    }
}
}
Run Code Online (Sandbox Code Playgroud)

Ice*_*kle 5

你可以这样做.

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");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

根据要求,我会尝试解释一下

可以从程序内的任何位置调用GetIntFromConsole,并且只返回有效的解析整数,这意味着空字符串,或者除了数字之外的任何其他内容都无法正确解析,并且用户必须重试

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

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

Main中的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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

我希望这是一个充分的解释,我不是一个老师:)