Freigeben über


Laufzeitbibliothek VFP7T.DLL

Mit Hilfe dieser Multithread-Laufzeitbibliothek können die Blockierungsprobleme vermieden werden, die mit der Verwendung der Laufzeitbibliothek vfp7r.dll verbunden sind. Mit der Laufzeitbibliothek vfp7t.dll können Sie prozessinterne Server bereitstellen, ohne dass die Codeausführung blockiert wird.

Da es sich bei Vfp7t.dll um eine funktionsreduzierte Laufzeitbibliothek handelt, die ausschließlich für prozessinterne Server konzipiert ist, wurden viele Befehle und Funktionen, die sich auf visuelle Features und auf mit Benutzereingaben verbundene Features beziehen, deaktiviert.

Da in vfp7t.dll keine Blockierung erfolgt, hindert ein Objekt, das eine ungewöhnlich lange Prozedur ausführt (z. B. das Drucken eines Berichts), andere Objekte nicht an der Ausführung schneller und kurzer Routinen. Bei der Verwendung von vfp7r.dll wäre es z. B. möglich, dass ein Objekt, das eine 1 Sekunde dauernde Datenbank-Abfrageroutine ausführt, 15 Minuten warten muss, bis ein anderes Objekt einen langen, komplexen Bericht ausgedruckt hat. Bei der Verwendung von vfp7t.dll tritt dieser Engpass nicht auf.

Ergänzend zur Vermeidung von Blockierungsproblemen werden durch die Implementierung des Apartmentmodell-Threadings in die Laufzeitbibliothek vfp7t.dll auch Konflikte beim Zugriff auf globale Daten von mehreren Threads aus beseitigt, da jedes Apartment eine eigene Kopie der globalen Daten erhält. Die Laufzeitbibliothek vfp7t.dll verwendet lokalen Threadspeicher, um jeder Klasseninstanz eine eigene Datenmenge zuzuweisen. Das bedeutet, dass eine als PUBLIC deklarierte Variable nur für den Thread global ist; jeder Thread verfügt über eine eigene Instanz der Variablen.

Anmerkung   Eigenschaften des Anwendungsobjekts, die gelesen und festgelegt werden können, z. B. AutoYield, sind global für das Projekt.

Visual FoxPro ermöglicht, dass dieselbe Instanz der Laufzeitbibliothek vfp7t.dll mit mehreren, gleichzeitig aufgerufenen prozessinternen DLL-Automatisierungsservern bereitgestellt wird, und zwar unabhängig davon, ob die Server in demselben Prozess/Thread ausgeführt werden oder nicht. Von der Ursprungsversion der Laufzeitbibliothek vfp7r.dll wird für jeden prozessinternen DLL-Server, der in demselben Prozess ausgeführt wird, eine eigene benannte Kopie der Bibliothek erstellt.

Visual FoxPro stellt eine Session-Klasse bereit, die Sie für Serverklassen, die als OLEPUBLIC definiert sind, verwenden sollten. Wie bei Formularen können Sie mit Hilfe der DataSession-Eigenschaft bei der Instanziierung eines Objekts eine private Datensitzung für das Objekt erstellen. Der Vorteil der Session-Klasse besteht darin, dass sie weniger Arbeitsspeicher als ein Formular verwendet. Durch den lokalen Threadspeicher bietet die Laufzeitbibliothek vfp7t.dll automatischen Schutz für globale Daten und Benutzerdaten; dieser Schutz gilt jedoch nur apartment- also threadübergreifend. Objekte in demselben Thread, die von derselben DLL instanziiert werden, können auf die Daten der anderen Objekte zugreifen. Die Session-Klasse trägt zum Schutz von Daten innerhalb des Threads bei.

Da die Laufzeitbibliothek vfp7t.dll nur für die Verwendung mit prozessinternen Servern konzipiert ist, wurde sie bewusst klein gehalten. Viele Benutzeroberflächenbefehle und Funktionen wurden beseitigt, einschließlich der Unterstützung für READ und @…GET/SAY älterer FoxPro 2.x-Versionen. Darüber hinaus wurden einige der in der Laufzeitbibliothek vfp7r.dll enthaltenen Designer, z. B. der Tabellen-Designer und der Berichts-Designer, entfernt. Die Laufzeitbibliothek vfp7t.dll bietet weiterhin die Unterstützung für visuelle Klassen, z. B. für Formulare.

Siehe auch

Laufzeitbibliothek VFP7R.DLL | Überlegungen und Beschränkungen beim Serverentwurf | Interoperabilität und das Internet |Visual FoxPro-Laufzeitbibliotheken | Auswahl von Prozesstypen