2016-01-22 1 views
1

Я много огляделся и нашел ответы на это, но никто из них не работает.Таймеры как сон?

Я понимаю, что «Sleep()» замораживает приложение, поэтому я добавил таймер. Я хочу, чтобы он спал 1000 миллисекунд, поэтому я сделал это:

Timer1.Interval = 1000 
Timer1.Start() 

Однако это не работает. Я не получаю никаких ошибок, и программа работает так же, как если бы у меня не было таймера.

Я делаю это правильно? если нет, то кто-нибудь может это исправить? (таймер включен)

Спасибо!

+1

'Таймер1 'будет запускать событие каждые 1000 мс; они не спать. Вы, должно быть, пропустили это при осмотре: [Timer Class] (https://msdn.microsoft.com/en-us/library/system.windows.forms.timer (v = vs.110) .aspx) – Plutonix

+0

Все, что вы сделали, запуск таймер. Ваш код будет продолжен с инструкцией после 'Timer1.Start()'. Вам необходимо выйти из этого метода, а затем в событии 'Timer1.Tick' вы можете сделать то, что вам нужно сделать, чтобы перезапустить обработку. – Blackwood

+1

Я думаю, что вам может понадобиться 'await Task.Delay (1000)' – Crowcoder

ответ

0

Вы должны слушать Tick события https://msdn.microsoft.com/en-us/library/system.windows.forms.timer.tick(v=vs.90).aspx

Создай обработчик и отслеживать клещи с:

'prompts the user whether the timer should continue to run' 
Private Shared Sub TimerEventProcessor(ByVal myObject As Object, _ 
             ByVal myEventArgs As EventArgs) _ 
            Handles myTimer.Tick 
    myTimer.Stop() 

    ' Displays a message box asking whether to continue running the timer. 
    If MessageBox.Show("Continue running?", "Count is: " & alarmCounter, _ 
         MessageBoxButtons.YesNo) = DialogResult.Yes Then 
     ' Restarts the timer and increments the counter. 
     alarmCounter += 1 
     myTimer.Enabled = True 
    Else 
     ' Stops the timer. 
     exitFlag = True 
    End If 
End Sub 

и в главном

Public Shared Sub Main() 
    ' Adds the event and the event handler for the method that will 
    ' process the timer event to the timer. 

    ' Sets the timer interval to 5 seconds. 
    myTimer.Interval = 5000 
    myTimer.Start() 

    ' Runs the timer, and raises the event. 
    While exitFlag = False 
     ' Processes all the events in the queue. 
     Application.DoEvents() 
    End While 

End Sub 

Надеется, что это помогает.

+0

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

+0

ОК, извините, я обновлю свой ответ, спасибо – Rosenumber14

+0

Итак, это заставит консоль ждать, но в то же время позволит другому коду работать? – Obfuscated