Программирование
Веб программирование

Многопоточность

 
 

Эта статья о том, как создать отдельный поток, в котором будет выполняться какой-нибудь метод.

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

Вот для примера возьмем такой код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Int64 i = 0;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Thread t = new Thread(new ThreadStart(metod));
            t.Start();
            timer1.Start();
        }
        
        private void metod()
        {
            do
            {
                i ++;
            }
            while (i < 10000000000);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = i.ToString();
        }
    }
}

Это форма с кнопкой и меткой, которая показывает значение переменной i, при нажатии на кнопку запускается метод metod() с циклом, где к i прибавляется по единице, пока она не достигнет значения 10000000000, это длится больше 10 секунд, и при этом интерфейс не виснет.


Есть вопросы? Спроси на нашем форуме!!
Stertor370 [07.06.2014 10:38]

Лучше напиши, как создавать делегаты для методов, чтобы обращаться из параллельных потоков к форме ;)



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.