2010-03-09 2 views
3

Я готов написать программу, которая через 5 секунд показывает текст, который был скрыт, а через 5 секунд изменил оба. Пример: - запуск программы: ТЕКСТ 1 - через 5 сек: TEXT 1 ТЕКСТ 2 - через 5 секунд: TEXT 3 - через 5 сек: TEXT 3 ТЕКСТ 4 ...Как изменить значение строки через 5 секунд?

Как Я могу на C# считать эти секунды?

+0

Необходимо указать структуру ... например. ASP.NET, Windows Forms и т. Д. – Keltex

ответ

-1

Если ваше представление не должно реагировать в течение первых 5 секунд, вы помещаете поток пользовательского интерфейса в режим сна и затем меняете его. Таким образом, вы можете избежать передачи функциональности обратно в поток пользовательского интерфейса.

+0

Да, сон может быть лучшим вариант для моего дела. Спасибо! – Peter

+0

@Peter, когда задействован gui, вы действительно должны думать о том, чтобы сделать его невосприимчивым ... но см. Комментарий Keltex на ваш вопрос, мы не знаем, что вы используете – tanascius

+0

В графическом интерфейсе спальные комнаты являются повсеместно плохими идеями. – Joel

7

Вы можете использовать timer.

+2

Пространство имен System.Windows.Forms: http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.aspx – tanascius

2

Пожалуйста, смотрите EggTimer in C# для хорошего примера:

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

1

Существует множество вариантов. System.Threading.Sleep позволяет блокировать определенное время. System.Threading.WaitHandle делают также, и вы можете прервать сон, если вам нужно. Наконец, можно использовать таймер. Во всех случаях убедитесь, что вы правильно синхронизировали свою работу.

5

В .NET есть три класса таймера (которые я знаю и использовал). Если вы пишете приложение Windows Forms, самым простым было бы добавить System.Windows.Forms.Timer и создать обработчик событий для события Tick. (Обратите внимание, что интервал измеряется в миллисекундах, поэтому вы должны установить его на 5000 в течение 5 секунд.) Аналогично работают other timers.

Ниже приведен пример того, как вы можете использовать System.Threading.Timer с выражением лямбда для функции обратного вызова (в которой вы должны изменить текст, упомянутый в вашем вопросе). (Обратите внимание, что вам нужно будет мобилизовывать вызов обратно в GUI поток, если вы обновляете управление на графическом интерфейсе. Это будет достигнуто с помощью Form.Invoke() после того, как проверка Form.InvokeRequired.)

var timer = new System.Threading.Timer(
    (object state)=>{ /* Your logic here */ }, 
    null, 
    0, 
    5000); 
... 
timer.Dispose(); // Don't forget to Dispose of the Timer when your app closes 
Смежные вопросы