# MainThreadAsync()

> Resumes execution on the Unity main thread. Completes immediately when called from the main thread.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine](/engine/6000.0/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public static MainThreadAwaitable MainThreadAsync()
```

### Returns

| Type                | Description                                                        |
| ------------------- | ------------------------------------------------------------------ |
| MainThreadAwaitable | Awaitable object that completes when switching to the main thread. |

### Examples

```csharp
public async Awaitable Start()
{
    await Awaitable.BackgroundThreadAsync();
    // do some heavy math here without blocking the frame
    float result = 42;
    // switch back to the main frame to be able to call SceneManager.LoadSceneAsync
    await Awaitable.MainThreadAsync();
    await SceneManager.LoadSceneAsync("my-scene");
}
```
