ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом 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++ — Видеоурок

Потоки в Visual C++ — Пример реализации и использования
5 (100%) 2 votes




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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">