2014-10-22 3 views
-4

Что у меня есть:

  1. Я отображение текущего времени и даты (в режиме реального времени) в нижней части формы с помощью элемента таймера.
  2. Я использую две метки для отображения времени и даты соответственно.

Что мне нужно:

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

Моя проблема:

Существует два второй задержка отображения времени и даты этикеток.

Мой код:

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
    'Format time and date labels. 
    TimeMain.Text = Format(Now, "hh:mm:ss") 
    DateMain.Text = Format(Now, "dddd, d/MM/yyyy") 
End Sub 

Примечание: выше предшествует Form_Load подразделам, который просто определяет по умолчанию кнопку принять. За этим следует 5 на пять коротких подписчиков.

Edit:

Хотя шаги для воспроизведения проблемы уже содержится в комментариях, я просил, чтобы повторить здесь. Единственное различие между двумя блоками кода, размещенными в этом вопросе, заключается в том, что я по умолчанию оставил текст ярлыка, чтобы избавить репродуктора от необходимости вводить что-либо.

Перетащите две метки и таймер на новую форму и использовать следующий код:

Public Class Form1 

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
     'Format time and date labels. 
     Label1.Text = Format(Now, "hh:mm:ss") 
     Label2.Text = Format(Now, "dddd, d/MM/yyyy") 
    End Sub 

End Class 

Для свойств таймера, Enabled определяется как True и Interval как 1000.

+2

Какой интервал установлен? и что такое 'Now'? Можете ли вы опубликовать минимальный образец, чтобы воспроизвести проблему? –

+0

Значит, вы не заполняете текстовые свойства метки до первого таймера таймера? Каков его интервал? Можете ли вы не просто создавать свои текстовые значения без таймера? – Kritner

+0

Вы имеете в виду, первоначально это занимает две секунды или всегда две секунды задержки? –

ответ

1

Я знаю, что это не совсем ответ, но это слишком долго, чтобы вписаться в комментарий. Также читайте здесь немного больше информации о таймерах: Why are .NET timers limited to 15 ms resolution? Does the System.Windows.Forms.Timer run on a different thread than the UI?

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

Представьте, что ваше приложение/таймер началось с «00: 00: 01.999», и ваша метка указывает «00:00:01» как текущее время.

Точно 1000 MS позже вы находитесь на «00: 00: 02.999», и прошедшее событие срабатывает, завершение на «2014-01-01 00: 00: 03.0045», и ваш ярлык обновляется до «2014-01-01 00:00:03 »- вы уже« потеряли »секунду здесь.

Вы можете попробовать установить интервал на что-то ниже, чем за одну секунду (скажем, 750), что даст вам потенциально более точный счетчик Кроме того, убедитесь, что вы устанавливаете метки таймера при загрузке формы. Я не очень много работал с таймерами, и у меня возникли проблемы с поиском статьи, которую я читал ранее, но вам может потребоваться беспокоиться о блокировке пользовательского интерфейса в зависимости от таймера (в структуре .net, по-видимому, есть 4 класса таймера.) Возможно, кто-то еще может расшириться, хотя, я мало знаю о winforms.

+0

Несмотря на то, что установка меток таймера при загрузке формы вызывает этикетку мгновенно, они больше не работают в реальном времени (секунды не увеличиваются). Однако сокращение интервала работало. Интервал составляет 100 работ.Я думал, что интервал будет определять в миллисекундах, как быстро увеличится секунд моего таймера, но теперь я понимаю, что интервал относится к обстрелу события. Спасибо за вашу настойчивость и изобретательность. Полезный контекст здесь: http://msdn.microsoft.com/en-us/library/system.timers.timer.interval%28v=vs.110%29.aspx –

+0

@Kritner: [Таймерская статья Стив] (http: //stackoverflow.com/questions/26517177/vb-net-will-a-function-run-if-something-else-is-running#comment41664469_26517177) в этой [SO Topic] (http://stackoverflow.com/questions/26517177/VB-нетто-волевая-а-функция-вводная, если с чем-то-еще-это-бегом) –

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