|Important||This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer|
Allows statements to be synchronized on a single expression.
SyncLock expression ...[ block ] End SyncLock
- Required. A unique collection of operators and values that yield a single result.
- Optional. The statements that will execute in sequence.
- End SyncLock
- Terminates a SyncLock procedure.
The SyncLock statement ensures that multiple threads do not execute the same statements at the same time. When the thread reaches the SyncLock block, it evaluates the expression and maintains this exclusivity until it has a lock on the object that is returned by the expression. This prevents an expression from changing values during the running of several threads, which can give unexpected results from your code.
Note The type of the expression in a SyncLock statement must be a reference type, such as a class, a module, an interface, array or delegate.
Class Cache Private Shared Sub Add(ByVal x As Object) SyncLock GetType(Cache) End SyncLock End Sub Private Shared Sub Remove(ByVal x As Object) SyncLock GetType(Cache) End SyncLock End Sub End Class