Создание потока с помощью Visual C#
Многопоточные приложения можно создавать в Microsoft Visual C# .NET или в Visual C#. В этой статье описывается, как простое приложение Visual C# может создавать потоки и управлять ими.
Исходная версия продукта: Visual C#
Исходный номер базы знаний: 815804
Требования
В следующем списке описаны рекомендуемые оборудование, программное обеспечение, сетевая инфраструктура и пакеты обновления.
- Windows или Windows Server
- Visual C# .NET или Visual C#
В этой статье предполагается, что вы знакомы со следующими разделами:
- Программирование на Visual C#
- Интегрированная среда разработки (IDE) Visual Studio .NET или интегрированная среда разработки Visual Studio
В этой статье описывается пространство System.Threading
имен библиотеки классов платформа .NET Framework .
Создание приложения Visual C# с потоками
Запустите Visual Studio .NET, Visual Studio или Visual C# Express Edition.
Создайте проект приложения Windows Visual C# с именем ThreadWinApp.
Добавьте в форму элемент управления Кнопка. По умолчанию кнопка называется Button1.
Добавьте компонент ProgressBar в форму. По умолчанию индикатор выполнения называется ProgressBar1.
Щелкните форму правой кнопкой мыши и выберите пункт Просмотреть код.
Добавьте следующую инструкцию в начало файла:
using System.Threading;
Добавьте следующий
button1_Click
обработчик событий для Button1:private void button1_Click(object sender, System.EventArgs e) { MessageBox.Show("This is the main thread"); }
Добавьте в класс следующую переменную
Form1
:private Thread trd;
Добавьте приведенный ниже метод в класс
Form1
:private void ThreadTask () { int stp; int newval; Random rnd = new Random (); while (true) { stp = this.progressBar1.Step * rnd.Next (-1, 2); newval = this.progressBar1.Value + stp; if (newval > this.progressBar1.Maximum) newval = this.progressBar1.Maximum; else if (newval < this.progressBar1.Minimum) newval = this.progressBar1.Minimum; this.progressBar1.Value = newval; Thread.Sleep (100); } }
Примечание.
Это код, лежащий в основе потока. Этот код представляет собой бесконечный цикл, который случайным образом увеличивает или уменьшает значение в ProgressBar1, а затем ожидает 100 миллисекунда, прежде чем оно продолжится.
Добавьте следующий
Form1_Load
обработчик событий для Form1. Этот код создает новый поток, делает поток фоновым, а затем запускает поток.private void Form1_Load(object sender, System.EventArgs e) { Thread trd = new Thread(new ThreadStart(this.ThreadTask)); trd.IsBackground = true; trd.Start(); }
Убедитесь, что он работает
Выполните сборку и запуск приложения. Обратите внимание, что значение в ProgressBar1 изменяется случайным образом. Это новый поток в операции.
Чтобы продемонстрировать, что поток main не зависит от потока, который изменяет значение ProgressBar1, нажмите кнопку на форме. Появится диалоговое окно со следующим сообщением об ошибке:
Это поток main
Дождитесь ввода. Обратите внимание, что значение в ProgressBar1выменяется.
Устранение неполадок
В более сложных приложениях убедитесь, что вы синхронизируете несколько потоков при доступе к общим переменным. Дополнительные сведения см. в инструкции блокировки и в других разделах в справочной документации по Visual C# в Интернете.
Ссылки
Дополнительные сведения см. в разделе Класс thread.