Free Trial

Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.


Share this Page URL
Help

Nebenläufige Programmierung > 396 Einfache nebenläufige Programmierung über ein... - Pg. 1194

1194 >> Einfache nebenläufige Programmierung über einen BackgroundWorker Für den Fall, dass mehrere Producer-Tasks existieren, müssen Sie sicherstellen, dass Com- pleteAdding erst dann aufgerufen wird, wenn alle Producer fertig sind. Dies können Sie recht einfach über einen Fortsetzungstask erreichen, der erst dann aufgerufen wird, nachdem alle Producer-Tasks beendet wurden: BlockingCollection<int> generatedNumbers = new BlockingCollection<int>(100); // Mehrere Producer-Tasks fügen der BlockingCollection<T> Werte hinzu: var producers = new Task[3]; for (int taskIndex = 0; taskIndex < producers.Length; taskIndex++) { producers[taskIndex] = Task.Factory.StartNew(() => { for (int i = 0; i < 10; i++) { generatedNumbers.Add(i); Thread.Sleep(1000); } }); } // Darauf warten, dass alle Producer fertig sind Task.Factory.ContinueWhenAll(producers, _ => {