Summary
When Parallel LINQ extensions are released, it will be easy to use multithreading with LINQ. The key is to use parallelism for complex data sets and for data that can be parallelized. Handle background exceptions by catching System.Threading.AggregateException, examining the InnerExceptions property for the actual exceptions. And, finally, Amdahl's Law reminds us to have reasonable expectations about performance gains achievable when using multithreading.
For additional reading on LINQ and Lambda expressions, see my book LINQ Unleashed for C# (Sams, August 2008, ISBN 978-0-672-32983-8).
Paul Kimmel is the "Visual Basic Today" columnist for CodeGuru and has written several books on object-oriented programming and .NET. Paul is an application architect for EDS. If you have a technology question, you can contact him at pkimmel@softconcepts.com.