You need to access the same object from multiple threads, without causing a concurrency problem.
Use the SyncLock statement to gain exclusive access to the object.
Trying to access an object on more than one thread at once is inherently dangerous, because a single command in a high-level language like Visual Basic .NET might actually compile to dozens of low-level machine language instructions. If two threads try to modify data at the same time, there’s a very real possibility that the changes made by one thread will be overwritten—and this is only one of many possible threading errors, all of which occur sporadically and are extremely difficult to diagnose.
To overcome these ...