FoxCore
FoxCore.Runtime nimmt lange Arbeit vom Hauptthread von Visual FoxPro. Jede Aufgabe startet ihren eigenen VFP-Prozess, das Skript wird hineingegeben, das Ergebnis eingesammelt und der Prozess geschlossen: VFP bleibt einfädig, es gibt einfach mehrere VFP. Die Anwendung steht währenddessen nicht still, und N Aufgaben laufen gleichzeitig.
Das gehört früh gesagt, weil es Enttäuschungen erspart: FoxCore macht Code nicht schneller. Was 40 Sekunden dauert, dauert weiter 40 Sekunden. Anders ist, dass es nicht blockiert, dass Sie Fortschritt zeigen und abbrechen können und dass mehrere gleichzeitig hineinpassen. Und einen Worker zu starten kostet zwischen einer Zehntelsekunde und drei Sekunden: eine Aufgabe von 200 ms ist also keine Kandidatin, der Start kostet mehr als die Arbeit.
In diesem Abschnitt
- Installation: Voraussetzungen, der Installer und die Registrierung in beiden Sichten.
- Erste Schritte: Ihre erste Aufgabe in einem anderen Prozess, in weniger als fünf Minuten.
- Erweiterte Muster: Der Stapel, der große Stapel, Fortschritt mit Abbruch, Handler und die Tafel.
- API-Referenz: Die sechs COM-Typen, Member für Member, und was es nicht gibt.
- Beispiele: Drei vollständige Programme, genau so, wie sie laufen.
- Lizenzierung: Eine Lizenz pro Unternehmen, was sich in 3.4.0 geändert hat und wie freigeschaltet wird.
Was es leistet
- Führt denselben VFP-Code unverändert in einem anderen Prozess aus: mit Ergebnis zurück, Fortschritt, Abbruch, Frist und deterministischem Ende
MaxWorkersvon 1 bis 64 gleichzeitigen Prozessen; voreingestelltmin(Kerne, 8)- Fortschritt und Meldungen aus der Aufgabe heraus mit
runtime.Progress(), gelesen mitGetProgress()undGetProgressMessage(), ganz ohne Pumpen - Kooperativer Abbruch: die Aufgabe fragt in jeder Schleifenrunde
runtime.IsCancelled() - Eine Frist je Aufgabe; läuft sie ab, endet die Aufgabe als
TimedOutund der Worker stirbt - Vollständige Isolation: der Worker sieht Ihre Variablen nicht, Ihre Arbeitsbereiche nicht, Ihre
SET-Einstellungen nicht und Ihre Cursor nicht. Er startet sauber und öffnet selbst, was er braucht - Der Worker kann mit
Call()in den Host zurückrufen, und beide Seiten teilen sich überGetValue()undSetValue()eine Tafel - Eingefrorener COM-Vertrag: sechs Typen, und Member wachsen nur am Ende
Wait und kein WaitAll (das Muster ist die Schleife mit Pump()), keine Ereignisse OnComplete / OnFailed, kein Task-Objekt und keine FoxCoreClass: das war die klassische Engine, eine andere Produktlinie. Die sechsundzwanzig kursierenden example*.prg gehören zu ihr und gelten hier nicht. Voraussetzungen
| Komponente | Voraussetzung |
|---|---|
| Visual FoxPro | VFP 9.0 SP2, registriert als VisualFoxpro.Application.9. Welcher Prozess als Worker dient, lässt sich mit WorkerProgId ändern |
| Windows | Windows 10 oder 11 |
| .NET Framework | 4.8 |
| COM-Registrierung | Mit dem 32-Bit-RegAsm (Pflicht: nur dorthin schaut vfp9.exe) und, seit 3.4.0, zusätzlich mit dem 64-Bit-RegAsm. Das erledigt der Installer |
Activate() übergeben, und sie wird lokal geprüft, ohne dass ein Server gefragt wird. Seit 3.4.0 wird sie auch außerhalb der IDE verlangt, in der .exe oder .dll, die Sie ausliefern. Ohne gültige Lizenz läuft der Lebenszyklus weiter (Attach, Ping, Shutdown), aber Aufgaben entstehen als Failed. Veröffentlichte Version: 3.4.2.