Course Outline
This intensive course has been specifically designed to address the requirements of developers who wish to take advantage of multiprocessor machines or machines with multiple cores. As chip manufacturers emphasize the development of processors with multiple cores, there is an increasing need to utilise multiple threads.
Within the .NET framework using C# or VB.NET, delegates will be introduced to concepts and techniques required to create multithreaded applications.
The course will contain a substantial amount of Hands-On work. Delegates will be introduced to topics during theory sessions and these will be followed by lab exercises relating to the topic. Delegates will work on practical exercises which will reflect commercial scenarios.
What you will learn
At the end of this course delegates will be able to:
1. Utilise Visual Studio .NET to develop multithreaded applications
2. Understand the need for and use of synchronization primitives
3. Understand the alternative approaches available
4. Understand use of multithreaded concepts in a range of .NET Application types
Multi-threaded .NET Programming with C# / VB.NET Course Outline
Introduction
What is Multithreading?
What is Synchronization?
Deadlocks
.NET Support for Multithreading
Threading
Creating Threads
Thread class
Runnable Interface
Threadpool
Starting Threads
Thread Priority
Aborting threads
Join
Synchronization Primitives
Monitors
WaitHandle
AutoResetEvent
ManualResetEvent
Mutex
Synchronization with Windows
Issues with GUI threading (WinForms/WPF/Silverlight)
Creating Delegates
Using BeginInvoke
Changing Values in Threads
Interlocked interface
- Increment
- Exchange
Callbacks
WaitCallback
TimerCallback
Threads and Timing
Sleep
Timer
Interrupting Threads
Terminating Threads
Issues of Thread Termination
Controlled Shutdown
Parrallel Development
Libraries and compiler support for Parallel applications
P-LINQ, parallel language semantics, and Framework 4.0 components for parallel applications
Task
Parallel (For, Foreach, Invoke)
New Features
Simplified asynchronous calls with async/await