ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode


Потоки в Visual C++ — Пример реализации и использования


Рассмотрим создание потоков на языке Visual C++. На примере программы в Visual Studio разберем основы и применение необходимых классов. В конце урока вы найдете видео, в котором тема раскрывается более подробно.

Потоки в Visual C++ — Создание демонстрационной программы

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

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

Создадим проект Windows Forms в Visual Studio на языке Visual C++. Сформируем из элементов управления интерфейс. Разместим на форме две кнопки Button и компонент для вывода изображения PictureBox.

Интерфейс программы для демонстрации потоков Visual C++

Двойным щелчком по каждой из кнопок сформируем обработчики события нажатия по ним.

У формы создадим обработчик события, возникающего при ее закрытии (непосредственно перед закрытием).

Обработчик события закрытия формы

Напишем код метода, который будет заниматься отрисовкой круга и который будет выполняться в отдельном потоке.


Так как обращение к кнопкам и PictureBox из отдельного потока невозможно (поскольку они были созданы не в нем, а другом — главном потоке программы), необходимо использовать делегаты.

Делегат — это класс, содержащий ссылку на метод, который необходимо выполнить. Метод при этом содержит операции с конкретными экземплярами объектов.

Объявим делегаты и дополнительные методы для них:

Для создания и выполнения потока в Visual C++ .NET используется класс Thread. В классе формы создадим поле данного типа.

В обработчике кнопки «Старт» напишем код, создающий и запускающий на выполнение поток, выполняющий код реализованного нами метода «Go».

В обработчик кнопки «Выход» добавим код, завершающий поток (на случай если кнопка будет нажата во время выполнения потока) и закрывающий форму.

В обработчик события закрытия формы также добавим код, принудительно завершающий поток.

Запустим программу и протестируем ее.

Программа, демонстрирующая работу потоков в Visual C++

Исходник программы доступен для скачивания по ссылке ниже.

Скачать исходник

 

 

Потоки в Visual C++ — Видеоурок

4.9/5 - (13 голосов)



Поделиться в соц. сетях:

Добавить комментарий

Ваш адрес email не будет опубликован.