This appendix summarizes C# parallel programming techniques.
Interacting with the User Interface
Code can directly interact with user interface elements if the code is running inside the thread that created those elements. For example, code executing in a separate thread cannot safely change the text displayed in a
To interact with the UI controls, a thread should follow these steps.
- Check the
InvokeRequiredproperty for a control that was created in the UI thread.
true, the thread should call the control’s
Invokemethod, passing it a delegate.
- The delegate executes on the control’s thread. Because it is running in the control’s thread, the delegate can safely interact with the control.
Parallel LINQ (PLINQ pronounced “plink”) allows a program to execute LINQ queries across multiple processors or cores in a multi-core system. Simply add a call to the
AsParallel extension method to the enumerable object from which the query selects data.
The following code uses a PLINQ query to select the even numbers in the array
numbers. The call to
AsParallel is highlighted in bold.
var evens = from int number in numbers.AsParallel() where number % 2 == 0 select number; foreach (int number in evens) Console.WriteLine(number);
This code composes the query and includes the call to
AsParallel. It then loops through the query’s results and displays them.
BackgroundWorker component provides a relatively ...