IMainThreadDispatcher Interface
Definition
Namespace: Brine2D.Threading
Minimal cross-platform interface for marshaling work to the main game thread. Required for GPU operations which must run on the main thread due to platform constraints.
Derived
↳ MainThreadDispatcher
| Properties | |
|---|---|
| IsMainThread | Returns true if called from the main game thread. Always returns false until ProcessQueue() has been called at least once. |
| Methods | |
|---|---|
| ProcessQueue() | Processes all queued main thread work. Called by GameLoop every frame. Also registers the calling thread as the main thread on the first invocation. |
| RunOnMainThread\(Action, bool\) | Queues work to run on the main thread, or executes it immediately if already on the main thread, before the game loop starts, or after it has shut down. |
| RunOnMainThreadAsync\(Action, CancellationToken\) | Queues work to run on the main thread and returns a System.Threading.Tasks.Task that completes when the work finishes. Executes inline if already on the main thread, before the game loop starts, or after SignalShutdown() has been called. |
| SignalShutdown() | Signals that the game loop has exited. After this call, RunOnMainThreadAsync\(Action, CancellationToken\) and RunOnMainThread\(Action, bool\) execute inline on the calling thread rather than enqueuing, preventing post-shutdown deadlocks in background cleanup continuations. Should only be called by the engine's game host infrastructure. |