Багатонитковість
Більш рекомендована бібліотека 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();