Hi Dick,
If an application keeps some workarea open for shared use, then I see two ways to solve this problem for asynchronous access:
1. Do not work directly with the shared workarea in the application code, but wrap it in some static class with the necessary set of methods. Within each method there must be a BEGIN LOCK ... END block when interacting with this workarea.
2. As far as I know, in X# a separate DataSession is allocated for each thread. As a result, each thread has its own independent set of workareas. Thus, each thread can independently open its shared workarea within the thread. In this case, synchronization when accessing the workarea is not needed.
Best regards,
Leonid