===== ICoroutineService ===== This service is responsible for starting and stopping Coroutines and exposing their execution as Tasks. It provides an alternative to awaiting conventional Tasks when a process requires frame-level control over its execution, allowing work to be distributed across multiple frames while still integrating with asynchronous application flows. === Methods === ^Method | Task **StartCoroutine**(IEnumerator coroutine, CancellationToken cancellationToken) | ^Description | Starts specified Coroutine and returns a Task that completes when the Coroutine finishes or is explicitly stopped. The Coroutine is advanced once immediately before execution begins. If it completes on this initial advancement, the returned Task completes immediately. If the supplied CancellationToken is cancelled, the Coroutine is stopped and the returned Task is cancelled. | ^Method | Task **StartCoroutine**(IEnumerator coroutine, CancellationToken cancellationToken) | ^Description | Starts specified Coroutine and returns its current value once the Coroutine completes or is explicitly stopped. The Coroutine is advanced once immediately before execution begins. If it completes on this initial advancement, the Task completes immediately and returns the Coroutine's current value. If the supplied CancellationToken is cancelled, the Coroutine is stopped and the returned Task is cancelled. | ^Method | void **StopCoroutine**(IEnumerator coroutine) | ^Description | Stops specified Coroutine if it is currently running and completes its associated Task successfully. Nothing happens if the Coroutine is not currently running. |