The multithreaded Visual FoxPro run-time library, VFP9T.dll, helps eliminate the blocking issues associated with the Visual FoxPro run-time library, VFP9R.dll. With the multithreaded Visual FoxPro run-time library, you can deploy in-process servers without blocking of code execution. This run-time library is located in the ..\Program Files\Common Files\Microsoft Shared\VFP directory.
Because the multithreaded Visual FoxPro run-time library is a lightweight run-time library designed only for in-process servers, many commands and functions related to visual and user input features have been disabled.
Because no blocking occurs in the multithreaded Visual FoxPro run-time library, an object executing an unusually long procedure, such as printing out a report, won't prevent other objects from executing quick rapid routines. For example, with the Visual FoxPro run-time library, an object that executes a 1 second database query routine may have to wait 15 minutes for an object printing a long, complex report. If you build with the multithreaded Visual FoxPro run-time library, you won't have the same bottleneck.
In addition to addressing blocking issues, implementing Apartment-model threading in the multithreaded Visual FoxPro run-time library also eliminates conflicts in accessing global data from multiple threads by giving each apartment its own copy of global data. The multithreaded Visual FoxPro run-time library uses thread local storage to give each class instance its own set of data. This means that a variable you declare PUBLIC is global only to the thread; each thread has an instance of the variable.
|Read/write properties of the Application object such as AutoYield are global to the project.|
Visual FoxPro makes it possible for the same multithreaded Visual FoxPro run-time library to be deployed with multiple, concurrently called in-process .dll automation servers whether they are in same process/thread or not. The original Visual FoxPro run-time library creates a renamed copy of the library for each in-process .dll server running in the same process.
Visual FoxPro offers a Session Class, which you should use for OLEPUBLIC server classes. As with forms, the DataSession property makes it possible for you to create a private data session for your object upon instantiation. The advantage of the Session class is that it uses much less memory than a form. The multithreaded Visual FoxPro run-time library automatically protects globals and user data through thread local storage, but this only applies between apartments (threads). Objects on the same thread instantiated from the same .dll are able to access each other's data. The Session class aids in data protection within the thread.
Since the multithreaded Visual FoxPro run-time library is designed for use only with in-process servers, it has been scaled down in size. Many user interface commands and functions have been eliminated including older FoxPro 2.x READ and @...Get/Say support. In addition, some of the designers such as Table Designer and Report Designer, which exist in the main Visual FoxPro run-time library, have also been removed. The multithreaded Visual FoxPro run-time library still supports visual classes such as forms.