Страницы

понедельник, 4 июля 2016 г.

C# Thread 2

using System.Threading;

Запустим внутри функции fnbig поток fnsmall

public void fnbig()
{
    //код до запуска потока
    Thread potok1 = new Thread(fnsmall_1); // создание отдельного потока
    potok1.Start(); // запуск потока
    // код после запуска первого потока
    Thread potok2 = new Thread(fnsmall_2); // создание отдельного потока
    potok2.Start();
    // десь код после запуска второго потока
}

public void fnsmall_1
{
//тело функции, выполняющейся в отдельном потоке
}

public void fnsmall_2
{
//тело функции, выполняющейся в отдельном потоке
}

После выход из fnbig потоки продолжают свою работу пока до вызываемого ими кода. Есть способ, который позволяет при завершении главной функции, которая запустила потоки, сразу завершать и выполнение потоков, для этого добавляем потоку параметр «IsBackground = true»:

public void fnbig()
{
    //  код до запуска потока
    Thread potok1 = new Thread(fnsmall_1); // создание отдельного потока
    potok1.IsBackground = true;
// завершить поток при завершении основного потока (объявлять, если точно знаете, что вам это нужно, иначе поток завершится не выполнив свою работу до конца)
    potok1.Start(); // запуск потока
    // код после запуска первого потока
}

Теперь у нас поток будет завершён сразу после выполнения fnbig().
Если вы хотите узнать в каком состоянии сейчас находится запущенный поток, то вам необходимо получить его статус «potok1.ThreadState». Подробное описание статусов можете просмотреть на сайте  MSDN .



Комментариев нет:

Отправить комментарий

ваше мнение...