Как я могу поставить задержку с C #? - PullRequest
5 голосов
/ 09 февраля 2012

Я хочу, чтобы приложение выполняло несколько инструкций, чтобы передать следующую инструкцию, которая должна ждать несколько миллисекунд.

такой, что:

while(true){

  send("OK");
  wait(100); //or such delay(100);

}

Возможно ли это в C #?

Ответы [ 8 ]

19 голосов
/ 09 февраля 2012

Thread.Sleep(100); добьется цели.Это можно найти в пространстве имен System.Threading.

8 голосов
/ 09 февраля 2012

Вы можете использовать метод Thread.Sleep () , чтобы приостановить текущий поток на X миллисекунд:

// Sleep for five seconds
System.Threading.Thread.Sleep(5000);
6 голосов
/ 09 февраля 2012

Для сна на 100 мс используйте Thread.Sleep

While(true){    
  send("OK");
  Thread.Sleep(100);
}
5 голосов
/ 09 февраля 2012

Вы можете использовать Thread.Sleep, но я бы настоятельно не рекомендовал это, если только вы A) не знаете наверняка, что это уместно, и B) нет более подходящих вариантов. Если бы вы могли быть более точными в том, чего вы хотите достичь, вероятно, будут лучшие альтернативы, такие как events и обработчики.

5 голосов
/ 09 февраля 2012

Thread.Sleep (миллисекунды) должен остановить приложение на эту секунду.Читайте о Thread.Sleep в MSDN.

4 голосов
/ 09 февраля 2012

Да, вы можете использовать метод Thread.Sleep :

while(true)
{
  send("OK");
  Thread.Sleep(100); //Sleep for 100 milliseconds
}

Тем не менее, спящий режим обычно свидетельствует о неоптимальном проектном решении.Если этого можно избежать, я бы порекомендовал это сделать (используя обратный вызов, шаблон подписчика и т. Д.).

2 голосов
/ 31 марта 2015

Это был бы намного лучший вариант, так как он не блокирует текущую thead и делает его не отвечающим.

Создайте этот метод

    async System.Threading.Tasks.Task WaitMethod()
    {
        await System.Threading.Tasks.Task.Delay(100);
    }

Затем вызовите вот так

    public async void MyMethod()
    {
        while(true)
        {
            send("OK");
            await WaitMethod();
        }
    }

Не подделывайте асинхронность в методе, который вызывает задержку!

Для получения дополнительной информации см. Эту страницу, которую я нашел, когда пытался сделать подобное

0 голосов
/ 02 января 2014

Thread.Sleep() - это решение. Его можно использовать для ожидания одного потока, пока другой поток не завершит его работу ИЛИ После выполнения одной инструкции кто-то хочет подождать время перед выполнением более позднего оператора. Он имеет два перегруженных метода. Первый принимает параметр типа милисекунды типа int, в то время как второй параметр принимает интервал времени. 1 Milisecond=1/1000s ИЛИ 1 second=1000 Miliseconds Предположим, если кто-то хочет подождать 10 секунд, код будет ....

System.Threading.Thread.Sleep(10000);

для более подробной информации о Thread.Sleep(), пожалуйста, посетите http://msdn.microsoft.com/en-us/library/274eh01d(v=vs.110).aspx

Счастливое кодирование .....!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...