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

Багатопоточність


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

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

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

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

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




static void Main(string[] args)
{
    new Thread(SomeF) { IsBackground = true }.Start();
    Console.ReadKey();
}


public static void SomeF()
{
     for (int i = 0; i < 10000; i++)
     {
          Thread.Sleep(100);
          Console.Write(i);
     }
     Console.Write("Готово");
}



Для форм

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

}



AsParallel працює повільніше, але не їсть багато ресурсів (рекомендовано!)

Для 3-х операцій

Enumerable.Range(0, 3).AsParallel().ForAll(
     x =>
     { MessageBox.Show(list[x]); }
);

Для списку

list.AsParallel().ForAll(
     x =>
     { MessageBox.Show(x); }
);



Parallel працює швидко, але і їсть багато ресурсів

Parallel.Invoke(
     () =>
     { MessageBox.Show("1");},
     () =>
     { MessageBox.Show("2"); },
     () =>
     { MessageBox.Show("3"); }
);

Або 

Parallel.For(0, 5, x =>
     { MessageBox.Show(list[x]); }
); 

Або 

Parallel.ForEach(list, x =>
     { MessageBox.Show(x); }
);