В языке C# и среде .NET Framework поддерживаются обе разновидности многозадачности: на основе процессов и на основе потоков. Поэтому средствами C# можно создавать как процессы, так и потоки, а также управлять и теми и другими. Для того чтобы начать новый процесс, от программирующего требуется совсем немного усилий, поскольку каждый предыдущий процесс совершенно обособлен от последующего. Намного более важной оказывается поддержка в C# многопоточной обработки, благодаря которой упрощается написание высокопроизводительных, многопоточных программ на C# по сравнению с некоторыми другими языками программирования.
Классы, поддерживающие многопоточное программирование, определены в пространстве имен System. Threading. Поэтому любая многопоточная программа на C# включает в себя следующую строку кода.
using System.Threading;
Класс Thread
Система многопоточной обработки основывается на классе Thread, который инкапсулирует поток исполнения. Класс Thread является
Создание и запуск потока
Длясоздания потока достаточно получить экземпляр объекта типаThread,т.е. класса, определенного в пространстве именSystem.Threading.Ниже приведена простейшая форма конструктора классаThread:
public Thread(ThreadStart
где
public delegate void ThreadStart()
Следовательно, метод, указываемый в качестве точки входа в поток, должен иметь возвращаемый типvoidи не принимать никаких аргументов.
Вновь созданный новый поток не начнет выполняться до тех пор, пока не будет вызван его методStart (), определяемый в классеThread.Существуют две формы объявления методаStart (). Ниже приведена одна из них.
public void Start()
Однажды начавшись, поток будет выполняться до тех пор, пока не произойдет возврат из метода, на который указывает
В приведенном ниже примере программы создается и начинает выполняться новый поток.
// Создать поток исполнения.
using System;
using System.Threading;
class MyThread { public int Count; string thrdName;
public MyThread(string name) {