以C#为单位在X秒后生成cmd?

以C#为单位在X秒后生成cmd?,c#,visual-studio-2010,visual-studio,visual-studio-2012,visual-studio-2013,C#,Visual Studio 2010,Visual Studio,Visual Studio 2012,Visual Studio 2013,我试图在X秒后关闭控制台窗口,下面是一个示例: 我的程序显示“键入一个数字:” 然后我输入“1945” 输入号码后,控制台显示“解锁” 问题是我希望控制台在3-4秒后重新运行原始消息,这样它就可以在循环中连续地执行此操作 在下面,我已经包括了当前的代码,以及我希望它在哪里做我想做的事情的注释 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace portko

我试图在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();
    }
}
}

你可以这样做

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}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);
    }
}
这个新的while循环将循环,直到发出
中断语句,因为它从上重新启动逻辑:
result=GetIntFromConsole(“Kod”)您的结果将被重新评估,您可以再次锁定/解锁屏幕几次;)


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

你可以这样做

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}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);
    }
}
这个新的while循环将循环,直到发出
中断语句,因为它从上重新启动逻辑:
result=GetIntFromConsole(“Kod”)您的结果将被重新评估,您可以再次锁定/解锁屏幕几次;)


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

你可以使用线程。睡眠等待一段时间

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;
}

您可以使用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;
}

非常感谢你!你认为你可以花一些时间来解释代码的作用吗?在我试图学习的过程中,了解不同元素如何工作以及它们如何通信将是一件很有趣的事情:那么,在它解锁后,我如何使它循环?我添加了这样一个选项,在解锁4秒后,它会返回到“Kod:”,但是我如何使它能够在其中键入“1946”,以便再次调用相同的方法?因此,您希望有一个无休止的循环来请求代码,并锁定或解锁它?你想进一步解释什么?是的,确切地说,喜欢和输入代码。我想知道GetIntFromConsole方法是如何实现的,它在初学者看来非常复杂:)非常感谢!你认为你可以花一些时间来解释代码的作用吗?在我试图学习的过程中,了解不同元素如何工作以及它们如何通信将是一件很有趣的事情:那么,在它解锁后,我如何使它循环?我添加了这样一个选项,在解锁4秒后,它会返回到“Kod:”,但是我如何使它能够在其中键入“1946”,以便再次调用相同的方法?因此,您希望有一个无休止的循环来请求代码,并锁定或解锁它?你想进一步解释什么?是的,确切地说,喜欢和输入代码。我想知道GetIntFromConsole方法是如何实现的,从初学者的角度来看,它看起来非常复杂:)如果从静态方法调用,那么getKod应该是静态的如果从静态方法调用,那么getKod应该是静态的