Aufgaben gleichzeitig mit begrenzten Threads ausführen
Problem:
Angenommen, Sie haben eine Reihe von Aufgaben, die nacheinander ausgeführt werden müssen, wobei maximal X Aufgaben gleichzeitig ausgeführt werden dürfen. Traditionell wurde ThreadPool.QueueUserWorkItem() für solche Aufgaben verwendet, aber es wird heute als suboptimaler Ansatz angesehen.
Lösung mit Aufgaben:
Um diese Parallelitätsbeschränkung mit zu erreichen Für Aufgaben können wir ein SemaphoreSlim-Objekt verwenden, um die Anzahl der verfügbaren Threads zu verwalten. Hier ist ein Codeausschnitt, der den Ansatz demonstriert:
SemaphoreSlim maxThread = new SemaphoreSlim(10); for (int i = 0; i < 115; i++) { maxThread.Wait(); Task.Factory.StartNew(() => { // Your task implementation }, TaskCreationOptions.LongRunning) .ContinueWith((task) => maxThread.Release()); }
So funktioniert der Code:
Das obige ist der detaillierte Inhalt vonWie kann ich mit C# mehrere Aufgaben gleichzeitig mit einer begrenzten Anzahl von Threads ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!