Отправляет email-рассылки с помощью сервиса Sendsay

Финансы. Инструкция

  Все выпуски  

Уроки по C# и .NET.


Информационный Канал Subscribe.Ru

Уроки по C#. Рассылки сайта progs.biz  
Начало > C# > Windows > Урок 6

Э. Троелсен. C# и платформа .NET.
Э. Троелсен. C# и платформа .NET
Заказать на Озоне


Полные версии уроков (с картинками): урок 6.

C# для Windows
Урок 6. Создание потока

Что такое отдельный поток? В первом приближении это некоторая отдельная часть программы, которая может выполняться параллельно с другими частями программы. Ключевое слово тут - параллельно. Т. е. в одном своем потоке программа может делать некоторое длительное действие, а в другом потоке - другое, и эти действия будут выполняться параллельно.

Классический пример использования потоков можно найти в программе Word - тут в одном потоке может происходить фоновая проверка орфографии, в другом - печать текста пользователем, в третьем - сохранение файла на жесткий диск.

Для использования потоков в программе мы используем пространство имен System.Threading. Простейший поток - это экземпляр класса Thread из этого пространства имен.

Рассмотрим пример использования потоков в Windows-приложении. Создайте обычное Windows-приложение на C#. Разместите на форме две кнопки, заголовки на которых поменяйте на Start Thread и MsgBox соответственно. По первой кнопке мы запустим поток, в котором бы будем выполнять некоторое продолжительное действие (оно будет длиться несколько секунд). По второй кнопке мы будем выполнять некоторое параллельное действие (там мы просто вызовем обычный MessageBox).

Вот что вы должны добавить в текст программы (т. е. в класс формы):

...
using System.Threading; // Добавляем нужное пространство имен.
 ...
        // Первый поток.
        public Thread thr1;
        // Вызываемая в потоке функция.
        void f1()
        {
            // Запуск длинной операции.
            for(int i=0; i<3000; i++)
            {
                // Результаты показываем в заголовке окна.
                Text = i.ToString();
            }
        }
        private void button1_Click(object sender, System.EventArgs e)
        {
            // Создание нового потока.
            thr1 = new Thread(new ThreadStart(f1));
            // Запуск нового потока.
            thr1.Start();
        }

        private void button2_Click(object sender, System.EventArgs e)
        {
            // Некоторое параллельное действие.
            MessageBox.Show("Some Action");
        }
        ...

Наш поток создается в обработчике щелчка по первой кнопке. Обратите внимание, что при вызове конструктора мы указываем, что за метод будет выполняться в нашем потоке (а именно метод с именем f1):

    ...
    thr1 = new Thread(new ThreadStart(f1));
    ...

Разумеется, метод f1 должен быть определен в нашем классе. В нем мы просто запускаем для демонстрации длинный цикл, в котором выводим возрастающие числа в заголовок окна.

Запускаем программу. При нажатии на первую кнопку запустится функция f1 в отдельном потоке. В заголовке окна замелькают последовательные числа. И, что самое важное, на вторую кнопку тоже можно будет нажимать до окончания работы обработчика первой кнопки - при этом появится соответствующий MessageBox:

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX new!
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
2002-2004 сайт progs.biz
2002-2004 Алексеев Игорь

http://subscribe.ru/
http://subscribe.ru/feedback/
Адрес подписки
Отписаться

В избранное