witam
Chciałbym wykonywać kilka zadań jednocześnie w osobnych wątkach, z limitem np 5 jednocześnie. Wyczytałem, że dobrym rozwiązaniem będzie użycie Parallel.For. Zrobiłem taki przykład z pomocą googla:
private delegate void ChangeTextDelegate(string text);
private static readonly object Sync = new object();
private void ParallelTest()
{
Random r = new Random();
Parallel.For(0, 10, new ParallelOptions { MaxDegreeOfParallelism = 5 }, delegate (int i)
{
this.Cos(i, r.Next(100).ToString());
});
}
private void ChangeText(string strText)
{
this.richTextBox1.Text += strText + "\n";
}
private void Cos(int i, string n)
{
lock (Sync)
{
this.Invoke(new ChangeTextDelegate(ChangeText), new object[] { "iteracja: " + i.ToString() + ", wątek: " + Thread.CurrentThread.ManagedThreadId });
}
}
dlaczego program po chwili zamarza? Jak najlepiej równolegle wykonywać obliczenia w osobnych wątkach?