Ich habe eine Schleife mit vielen Interaktionen laufen, so dachte ich, Fäden, aber ich weiß nicht, wie die Anzahl der Thread zu steuern:Limit Anzahl der Threads C#
for (int i = 0; i < 45856582; i = i + 10000)
{
string result = request.Get(String.Format(mold, i));
Worker temp = new Worker(i, i + 10000);
Thread th = new Thread(new ThreadStart(temp.DoWork));
th.Start();
}
Diese Schleife würde zu viele Threads erstellen , wie kann ich es so machen, dass die Schleife aufhört und nicht mehr Threads erzeugt als eine bestimmte Anzahl und warten, bis einer der erzeugten Threads fertig ist, um fortzufahren?
Dies ist der Arbeiter-Klasse:
public class Worker
{
int startIndex = 0;
int endIndex = 0;
public Worker(int startIndex , int endIndex)
{
this.startIndex = startIndex;
this.endIndex = endIndex;
}
public void DoWork()
{
for (int i = startIndex; i < endIndex; i++)
{
// Do Work
}
}
}
Sie könnten eine ['Task'] (https://msdn.microsoft.com/en-us/library/system. threading.tasks.task (v = vs.110) .aspx) anstatt Threads explizit zu verwalten. –
vielleicht ThreadPool oder Parallel-Klassen? Normalerweise machen sie automatisch gute Arbeit mit Threads Count – Disappointed
Ich würde auf jeden Fall auf ['Parallel'] (https://msdn.microsoft.com/en-us/library/system.threading.tasks.parallel (v = vs .110) .aspx) 'For' oder' ForEach' hier. –