2016-12-14 2 views
-6

Есть команда, которая обычно заставляет программу ждать. Теперь я знаю, как заставить программу ждать, а также замораживать все входные данные, но это не то, чего я пытаюсь достичь. Я делаю простое консольное приложение Windows, просто чтобы начать с меня.Нет ли способа подождать в C#?

 String name; 
     Console.WriteLine("What is your name?"); 
     name = Console.ReadLine(); 
     Console.WriteLine("Hello, {0}", name); 

Теперь я хотел бы, чтобы подождать, а также позволяет любой вход, так что, как я мог запустить что-то другое, но и иметь его туда, где вы можете иметь это сказать Hello, (Insert Name Here)

А также , как уже упоминалось ранее, я очень новичок, попробуйте объяснить, на что вы отвечаете, спасибо!

+2

'Console.ReadLine()' ждет вас. К сожалению, я не уверен, что вы ищете. – siride

+0

Да проверьте эту ссылку, кто-то задал тот же вопрос перед тем, как http://stackoverflow.com/questions/9241025/wait-pause-an-amount-of-seconds-in-c –

+0

Если вы спросите о концепции «ожидания» в широком перспективные и разные языки, ожидая в контексте ввода пользовательских консолей, не соответствуют типичному значению. Обычно «ждут» концепцию в непосредственной близости от потоков, synchonicuty и т. Д. –

ответ

0

Внешний вид ReadLine, который вы уже используете, который ждет ввода пользователя, Thread.Sleep, как показано ниже, является одним из основных способов остановки приложения для X-х времени, чтобы дождаться завершения выполнения или пользователя, который будет готов , Thread.Sleep исполнение блоков, хотя и в более сложных приложениях:

Thread.Sleep(2000); 

Попадая в продвинутом образом, вы можете использовать асинхронные концепции программирования и использование Task.Delay. Это не блокирует поток как сон, и это означает, что вы можете сделать это, используя один поток, используя модель программирования async. Этот пример кода создает новый метод, говорит, что он асинхронный и определяет его как задачу, которая в основном является единицей работы, а также более продвинутой концепцией, но просто для того, чтобы дать вам идею/обзор на высоком уровне.

async Task TaskDelay() 
{ 
    await Task.Delay(2000); 
} 

private async void Test() 
{ 
    // Console.WriteLine etc. etc 

    await PutTaskDelay(); 
    MessageBox.Show("Hello, I'm done waiting."); 
} 
+0

Я не занимаюсь обсуждением лучшей практики, это было просто простым примером, который он понимал бы с очень ограниченным фоном. В его нынешнем виде он будет работать, и он работает в расширенном примере, не углубляясь в тему. Я думаю, что вы переусердствуете по семантике. –

+0

Достаточно просто сказать «асинхронная задача», так почему бы просто не сделать это? – siride

-1

Я считаю, что вопрос:

Как ждать в главном потоке для пользовательского ввода, во время работы на какой-то другой задачи в фоновом режиме?

class Program 
{ 
    static void Main(string[] args) 
    { 
     AsynchronousTask(); 
     Console.WriteLine("What is your name?"); 
     var name = Console.ReadLine(); 
     Console.WriteLine("Hello, {0}", name); 
     Console.ReadLine(); 
    } 

    private static async void AsynchronousTask() 
    { 
     Task.Run(() => 
     { 
      while (true) 
      { 
       Console.ForegroundColor = ConsoleColor.Cyan; 
       Console.WriteLine("Async tas is running in the background."); 
       Console.ForegroundColor = ConsoleColor.White; 
       Thread.Sleep(1000); //this is just to slowdown background thread 
      } 
     }); 
    } 
} 

Хотя этот пример очень простой он показывает, как получить код работает в фоновом режиме. Тема, которую вы, возможно, захотите изучить, называется Asynchronous Programing

+0

@Nkosi да это может, но что это связано с кодом, который я опубликовал? – Furmek

Смежные вопросы