How to: Coordinate Multiple Threads of ExecutionÂ
In order for your multithreaded components to be thread-safe, you must coordinate access to shared resources. If multiple threads attempt to access a shared resource at the same time, race conditions can result, causing corruption of data. You can avoid race conditions by using locks. For details on thread-safety and race conditions, see Thread-Safe Components.
To create a lock on an object
Identify the code that must be executed atomically and the object on which the code will be executed. For details, see Thread-Safe Components
Place a lock on that object and enclose your code inside that lock.
This code will now be executed atomically on the locked object.
SyncLock MyObject ' This represents the start of the lock on MyObject. ' Insert code to be executed atomically on MyObject here. End SyncLock ' This represents the end of the lock.
lock (MyObject) // All code inside the braces {} is executed with MyObject locked. { // Insert code to be executed atomically on MyObject here. }
See Also
Tasks
Walkthrough: Authoring a Simple Multithreaded Component with Visual Basic
Walkthrough: Authoring a Simple Multithreaded Component with Visual C#
Reference
Concepts
Thread-Safe Components
Asynchronous Pattern for Components