Показаны сообщения с ярлыком Потоки. Показать все сообщения
Показаны сообщения с ярлыком Потоки. Показать все сообщения

воскресенье, 24 июня 2012 г.

[видеоурок+статья] C# Многопоточные операции, использование Threading

Использование нескольких потоков может пригодиться в разных видах работы. Самый распространённый случай - это крупная обработка данных, или нескольких данных. Очень не удобно было бы, если программа могла бы обрабатывать только одним потоком и во время работы зависала бы...

Для использования нескольких потоков надо сделать импорт стандартной библиотеки, который делается в одну строчку:


using System.Threading;

Далее покажу простейший пример создания потоков:


        //Объявляем класс Thread, загоняем экземпляр в переменную
        public Thread newThread;
        private void Form1_Load(object sender, EventArgs e)
        {
            //Создаём новый поток, им будет функция F2
            newThread = new Thread(F2);
            //Запускаем поток на выполнение
            newThread.Start();

        }

        private void F2() {
            int i = 0;
            //Запускаем цикл
            while(i == 0){  
                //даём доступ к форме
                this.Invoke((MethodInvoker)delegate()            
                {   
                    //присваиваем значение текстовому полю
                    textBox1.Text += "1";
                    //делаем паузу на 50 мсек
                    Thread.Sleep(50);
                });            
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Останавливаем/удаляем поток
            newThread.Abort();
        }

Обязательно надо заметить, что данный фрагмент даёт доступ к форме из постороннего потока:
                this.Invoke((MethodInvoker)delegate()            
                {   
                    
                    textBox1.Text += "1";
                    
                });    

Если этого не сделать, при попытке поменять что то в форме, добавить, будет выдавать ошибку.

TROCKII БЛОГ Copyright © 2012 | Template created by Lev Trockii |