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
InvokeRequired
property for a control that was created in the UI thread. - If
InvokeRequired
istrue
, the thread should call the control’sInvoke
method, 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 ...
Get C# 5.0 Programmer's Reference now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.