Generated by AurionDocs
Job ID: 934f8c39-8082-4942-8d17-72ed8f5f8d50
Source commit: 40aea9a
1.4 KiB
AsyncRunner
File:
src/EchoHub.Client/Services/AsyncRunner.cs
Kind: class
public static class AsyncRunner
Runs the provided asynchronous work on a background thread and routes exceptions to the UI, eliminating boilerplate like Task.Run/try/catch/app.Invoke(ShowError).
AsyncRunner.Run takes an IApplication (app), a Func<Task> representing the work, an Action<string> (showError), a string (errorPrefix) used in the user-facing error, and an optional string? logContext to enrich logs; if an exception occurs, it logs with Log.Error and invokes the UI thread to display the error via showError.
This pattern centralizes background execution and UI-error reporting, so callers need only supply the work and error message components and can rely on consistent logging and user feedback.
Remarks
This abstraction isolates the cross-cutting concerns of background execution and UI error presentation. By encapsulating this pattern, it avoids duplicating boilerplate across call sites and ensures errors are logged with contextual information and surfaced on the UI thread via IApplication.Invoke.
Notes
- This method is fire-and-forget: it launches the work and does not return a
Task; callers cannot await completion or observe exceptions from the caller's context. If you need completion signaling, consider returning aTaskor providing a completion callback.