OriginalGriff
Задача.Задержка и нить.Сон-это разные вещи: нить.Sleep приостанавливает текущий поток на определенное количество миллисекунд - в вашем примере он ждет одну минуту (==60 секунд == 60000 миллисекунд)
Задача.Задержка этого не делает, сама по себе она немедленно возвращается:
Stopwatch s = new Stopwatch();
s.Start();
Console.WriteLine("Before: " + s.ElapsedMilliseconds.ToString());
Task.Delay(3000);
Console.WriteLine("After: " + s.ElapsedMilliseconds.ToString());
s.Stop();
Будет выводить:
Before: 0
After: 0
То, что он делает, - это создает новый поток, и он будет ждать вместо этого.
Если вы пытаетесь получить "разрыв"между функциями, то поток.Сон-это один из способов:
Stopwatch s = new Stopwatch();
s.Start();
Console.WriteLine("Before: " + s.ElapsedMilliseconds.ToString());
Thread.Sleep(3000);
Console.WriteLine("After: " + s.ElapsedMilliseconds.ToString());
s.Stop();
Before: 0
After: 3002
Но - и это большое НО-нить.Сон означает, что во время ожидания задачи больше ничего не может произойти, включая любые обновления пользовательского интерфейса. Таким образом, кнопки не работают, метки и текстовые поля не меняются, ничего не происходит до тех пор, пока не истечет указанный вами период времени.
Если вы хотите использовать Task.Задержка, чтобы приостановить вашу нить, но все же делать что-то, тогда вам нужно выглядеть так, как
await
:
ждут (Справочник по c# )[
^] но есть хороший шанс, что это тоже не будет делать то, что вы хотите.
Что именно вы пытаетесь сделать?
Richard Deeming
Возможно, стоит уточнить, что это приблизительный количество миллисекунд. Он не возобновится раньше, чем пройдет это количество миллисекунд, но нет никакой гарантии, что он возобновится в определенный момент времени.
OriginalGriff
И что это в тиканье таймера, которое может составлять 15 мс - но так как он, кажется, хочет здесь задержки "человеческого масштаба", я не хотел слишком запутывать проблему.
oxzy's Modz uk
главное, что я хочу сделать, - это дать каждой функции 60 секунд временного пространства между собой .
я ищу простое решение этой проблемы
есть ли какой-нибудь другой способ сделать это или как лучше всего это сделать