Часы без использования таймера (потоки) - Visual Basic .NET
Формулировка задачи:
Пытаюсь разобраться с потоками. Пробую сделать так, чтобы в метке на форме показывалось текущее время, разумеется без использования контрола Timer.
"часики" стоят как вкопанные
Листинг программы
- Imports System.Threading
- Public Class Form1
- ' Создаем новый экземпляр класса SecondThread
- Dim MyThread As New SecondThread()
- ' Создаем делегат ThreadStart и передаем адрес процедуры MyTime экземпляра класса SecondThread
- Dim bThreadStart As New ThreadStart(AddressOf MyThread.MyTime)
- ' Создаем новый объект потока, в котором вызывается делегат
- Dim bThread As New Thread(bThreadStart)
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- bThread.Priority = ThreadPriority.Highest
- bThread.Name = "Часы"
- bThread.IsBackground = True
- End Sub
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- ' Запускаем поток с помощью метода Start
- bThread.Start()
- End Sub
- End Class
- 'Описываем новый класс с именем SecondThread
- Public Class SecondThread
- ' Внутри класса объявляем новую процедуру MyTime
- Public Sub MyTime()
- ' которая при вызове работает постоянно, т. к. значение условия цикла While всегда True
- Do While True
- Form1.Label1.Text = Format(Now, "hh:mm:ss")
- Loop
- End Sub
- End Class
Решение задачи: «Часы без использования таймера (потоки)»
textual
Листинг программы
- Dim MyThread As New SecondThread(Me)
- ...
- Public Class SecondThread
- Private f As Form1
- Public Sub New(f As Form1)
- Me.f = f
- End Sub
- Public Sub MyTime()
- Do While True
- f.Invoke(Sub() f.Label1.Text = Format(Now, "hh:mm:ss"))
- Thread.Sleep(500)
- Loop
- End Sub
- End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д