Домой Time Электронные часы (через потоки): Справочник по C#

Электронные часы (через потоки): Справочник по C#

769
0


      Все кто смотрел первый курс по c# (Windows Forms) немало услышали про потоки, но, все таки сам для себя захотел сделать часики. Вот решил опубликовать.
      Стоит напомнить, что при запуске программы запускается главный поток, и когда вы перетягиваете элементы на форму,- они создаются в главном потоке. Для манипуляции в другом потоке этими элементами, прибегаем к методу Invoke(), который имеет две перегрузки и напрямую связан с делегатом!



Итак, создаем Windows Forms приложение. Перетаскиваем на форму один элемент Label.

Листинг программы:

namespace Clock
{
public partial class Form1 : Form
{
// делегат для манипулирования компонентом Label
public delegate void DelegateForTime(Label label);
// поле типа делегата
DelegateForTime DelTime;
// поток
Thread t1;
public Form1()
{
InitializeComponent();
DelTime = new DelegateForTime(StartTime);// указываем метод делегату
}

private void Form1_Load(object sender, EventArgs e)
{
t1 = new Thread(LabelTime); // создаем поток
t1.IsBackground = true; // задаем фоновый режим
t1.Priority = ThreadPriority.Lowest; // указываем самый низкий приоритет
t1.Start(); // стартуем
}

// устанавливает время
void StartTime(Label label)
{
// выводим всегда две цифры
// (00:00)
string s = DateTime.Now.Hour.ToString("00");
s += " : ";
s += DateTime.Now.Minute.ToString("00");
s += " : " + DateTime.Now.Second.ToString("00");
label.Text = s;
}

void LabelTime()
{
// бесконечный цикл
while (true)
{
Invoke(DelTime, label1);// запускаем метод с главного потока
}
}
}
}


Важный момент, это создание делегата и указание метода в главном потоке:

public Form1()
{
InitializeComponent();
DelTime = new DelegateForTime(StartTime);// указываем метод делегату
}


      При загрузке формы, создается новый поток, происходит вызов метода LabelTime() в котором с помощью метода Invoke(), связываем делегат DelTime c методом StartTime(…), и вторым параметром передаем текстовый компонент Label.

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

Задать стиль вы можете в свойствах формы, в окне Properties
ЧИТАТЬ ТАКЖЕ:  Расчет возраста по дате рождения: Справочник по C#

Ссылки для скачивания примера: Rusfolder.netDepositFilesTurbobit.netLetitbit.net

Электронные часы (через потоки): Справочник по C#

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь