Головна‎ > ‎C#‎ > ‎Додатково‎ > ‎

Багатонитковість

Більш рекомендована бібліотека Task

Можуть працювати після закриття програми





Без параметра

Thread a = new Thread(new ThreadStart(F1));

// Почати 
a.Start();

// Пауза
a.Suspend();

// Продовжити
a.Resume();

// Зупинити потік
a.Abort();


for (int i = 0; i < 5; i++)
{
     new Thread(F1).Start();
}




З параметром

Thread thread = new Thread(new ParameterizedThreadStart(F1));
thread.Start(4);

void F1(object a) {
    int c = (int)a;
}



Фоновий (працює після закриття програми)

new Thread(F1) { IsBackground = true }.Start();



Фоновий, з найвищім приоритетом для процесора

new Thread(F1) { IsBackground = true, Priority = ThreadPriority.Highest }.Start();



Очікувати на закінчення усіх потоків

for (int i = 0; i < th.Count; i++)
     {
          th[i].Join();
     }



Отримати tb1.Text в потоці WPF

void F1()
{
     string text = "";
     System.Windows.Application.Current.Dispatcher.Invoke(
          DispatcherPriority.Normal, 
          (ThreadStart)delegate { text = tb1.Text; });

            MessageBox.Show(text);
}


Записати в tb1.Text з потоку WPF

this.Dispatcher.Invoke(() => {
     tb1.Text = "Ok";
});



Get для компонент форми WinForm

try
{
     Thread potok1 = new Thread(new ThreadStart(F1));
     potok1.SetApartmentState(ApartmentState.STA);
     potok1.Start();
}
catch
{

}


void F1()
{
     MessageBox.Show(textBox1.Text);
}



new Thread (() => {MessageBox.Show("1");}).Start();