В языке 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) {