IR
irwinrodriguez.dev
FC Perpetual license · One-time payment

Background tasks. Always-responsive UI.

Run heavy processes — imports, reports, API calls — without blocking your VFP application's interface. .NET engine, simple VFP API, up to 32 parallel tasks.

Features

Async execution

Launch VFP tasks in the background. The UI stays fully responsive while work happens in parallel.

Progress reporting

Update Task.Progress (0-100) from the task. Read progress in real-time from a Timer or UI event.

Events: OnComplete, OnFailed

Assign a VFP procedure name and FoxCore calls it automatically when the task finishes or fails.

Up to 32 parallel tasks

Configure MaxWorkers according to your hardware. Ideal for batch processing, data sync and reports.

Sequential tasks

Chain tasks by passing the result of one as the parameter of the next. WaitFor controls synchronization.

Per-developer license

Each seat covers one developer. Distributed EXE applications run without restrictions in production.

How it works

  1. 1
    Define the task procedure

    Create a VFP procedure that receives loParams and loTask. Update loTask.Progress and assign loTask.Result when done.

  2. 2
    Instantiate FoxCoreClass and call Run()

    Create CREATEOBJECT('FoxCore.FoxCoreClass'), prepare parameters and call loCore.Run('MyProcedure', loParams).

  3. 3
    Handle the result

    Subscribe to OnComplete, check status with loTask.Status, or use WaitFor to wait in scripts or tests.

Pricing

Per-seat license. One-time payment. The version you buy works forever.

1 Seat
199
1 developer
Buy
MOST POPULAR
4 Seats
249
Up to 4 developers
Buy
8 Seats
299
Up to 8 developers
Buy

Frequently asked questions

How many tasks can I run in parallel?
Up to 32. The default MaxWorkers value is 8. Adjust it according to the CPU cores available on your system.
Do tasks share memory with the UI?
No. Each task runs in a separate VFP instance. They do not share global variables, SET commands or cursors with the main thread.
Can I access DBFs from tasks?
Yes, but with caution. Each instance opens its own connections. Use tables in shared mode (SET EXCLUSIVE OFF) and avoid concurrent writes without coordination.
Does the license cover all my development installations?
Each seat covers one developer. If your team has 4 people, the 4-seat pack is the right option.
What happens if a task throws an error?
The task status becomes 'Failed' and loTask.Error contains the error message. If you assigned OnFailed, FoxCore calls that procedure automatically.

No more frozen UIs in your VFP apps

Install FoxCore and have your first background task running in minutes.

Buy now