Appendix U Parallel Programming
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 TextBox or Label.
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. - If
InvokeRequiredistrue, the thread should call the control’sInvokemethod, 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.
PLINQ
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
The BackgroundWorker component provides a relatively ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access