Страницы

Ярлыки

ДШИ-200 (1) КСВУ-6 (1) ЛЧМ (1) МДР-23 (1) микроконтроллер (1) перенаправление (1) С (1) структуры (1) учебный курс (1) AC/DC (1) ADC (1) ADS1248 (1) Altium (1) Altuim (1) Amolifer (1) ARM (1) assembler (2) Asynchronous (1) at command (3) at#eaddr (1) at#epassw (1) at#esmtp (1) at#euser (1) at#gprs (1) at#selint=2 (1) at#sgact (1) at#tcpatcmdseq (1) ATX (1) AVR (2) bit (1) boost (1) boot (2) bootlloader (1) C (6) C# (7) C++ (1) CMSIS (1) command (1) CP2101 (1) CSD (1) Danfoss (6) DBGMCU (1) debug (1) debug.ini (1) delegate (1) Discovery (1) DMA (1) DRV8805 (1) DWT (1) e-mail (1) email (1) Exel (1) exFAT (1) FC-051 (1) gl868-dual (2) gl868-dual cmux (1) GPIO (2) GSM (1) I2C (1) IAR (1) ID (1) Invoke (1) Keil (3) LabVIEW (1) Linux (1) LMP7721 (1) LoRa (3) mdmread (1) memory (1) MODBUS (1) Operation Amplifer (1) pack (1) printf (2) printf() (1) RCC (1) retargetting (1) RFM95/96/87/98(W) (1) RS232 (4) RS485 (1) RSAPI.DLL (1) RSS (1) RTC (2) send (2) SerialPort (1) Silabs (1) spl (1) standard peripherals library (1) startup (1) stepper (2) STlink (1) STlink/V2 (2) STM32 (10) stm32 stm32f10x (1) STM32DBG.IN (1) STM32F (19) STM32F103 (4) struct (1) Structure (1) system (1) SystemInit (1) Task (1) telit (5) thread (4) TIM (1) Type Cast (1) UART (1) uni-trend (1) USART (6) USB (1) UT61B (1) viewer (1)

понедельник, 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 .



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

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

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