Ich möchte nur 2 Threads für die Schleife zu machen. Ich habe versucht, diesen Code:C# TPL for loop - Anzahl der Threads begrenzen
ParallelOptions po = new ParallelOptions {
MaxDegreeOfParallelism = 2
};
Parallel.For(0, width, po, x => {
sb.Append(Thread.CurrentThread.ManagedThreadId);
sb.Append(Environment.NewLine);
for (int y = 0; y < height; y++) {
double a = (double)(x - (width/2))/(double)(width/4);
double b = (double)(y - (height/2))/(double)(height/4);
}
});
Aber wenn ich Thread.CurrentThread.ManagedThreadId
anzuzeigen, schafft es mehr als 2-IDs. Ich habe auch versucht, diesen Code vor Schleife hinzu:
ThreadPool.SetMaxThreads(2, 2);
ThreadPool.SetMinThreads(2, 2);
Aber es macht auch nichts ändern. Jemand hat vielleicht eine Idee, wie kann ich dieses Problem lösen?
Ich hoffe, nicht mit 'String 'in einer Multithread-Umgebung, da es nicht thread-sicher ist – MickyD
Ich benutze dies nur, um große Zeichenfolge mit allen Threads ID zu machen. Denkst du, dass dieser StringBuilder Probleme mit mehr als 2 Threads macht? –
Ja. Verwenden Sie einfach 'Console.WriteLine (Environment.CurrentManagedThreadId)' oder 'Trace.TraceInformation .....' – MickyD