Понятно: например, представьте себе кнопку в моей форме. Когда пользователь нажимает на кнопку, некоторый метод void должен запускаться через 30 секунд.
Был бы пустой метод DoAfterDelay
который принимает два входных параметра. Первый метод - это метод (с использованием делегатов), а второй - временной интервал. Итак, я буду иметь:
public delegate void IVoidDelegate();
static void DoAfterDelay(IVoidDelegate TheMethod, TimeSpan Interval)
{
// *** Some code that will pause the process for "Interval".
TheMethod();
}
Итак, мне просто нужен кусок кода, чтобы приостановить процесс на определенный промежуток времени. До этого я использовал этот код для этого:
System.Threading.Thread.Sleep(Interval);
Но этот код мне не подходит, потому что он останавливает весь процесс и останавливает программу. Я не хочу, чтобы программа застряла в методе DoAfterDelay
. Вот почему Thread.Sleep
бесполезен.
Так кто-нибудь может предложить лучший способ? Конечно, я искал об этом, но большинство решений, которые я нашел, были основаны на использовании таймера (как здесь, например). Но использование таймера - мое последнее мнение, потому что метод должен запускаться один раз, а использование таймеров делает программу непонятной для чтения. Поэтому я ищу лучшее решение, если оно есть. Или, может быть, я должен использовать таймеры?
Я думаю, что я должен играть с темами, но не уверен. Поэтому мне интересно, если кто-нибудь может привести меня к решению. Заранее спасибо.