# Wait(EventID)

> Wait for an asynchronous event.

## Definition

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

```csharp
public bool Wait(EventID id)
```

### Parameters

**** (\[EventID]\(/engine/6000.5/script-reference/unityengine/lighttransport/eventid)): ID of the event.

### Returns

| Type                                                          | Description                                       |
| ------------------------------------------------------------- | ------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | Returns true of the event completed successfully. |

### Remarks

This is a blocking method which stalls the current CPU thread until the operation represented by the EventID is complete. Adding a stall can have a significant performance impact during regular execution. To avoid stalls, call [IDeviceContext.Wait](/engine/6000.5/script-reference/unityengine/lighttransport/idevicecontext/wait.md) at the end of your sequence of operations.

```csharp
using Unity.Collections;
using UnityEngine;
using UnityEngine.LightTransport;

IDeviceContext ctx = new RadeonRaysContext();
ctx.Initialize();
uint length = 8;
var input = new NativeArray<byte>((int)length, Allocator.Persistent);
for (int i = 0; i < length; ++i)
    input[i] = (byte)i;
var output = new NativeArray<byte>((int)length, Allocator.Persistent);
BufferID id = ctx.CreateBuffer(length, 1);
var writeEvent = ctx.CreateEvent();
ctx.WriteBuffer(id.Slice<byte>(), input, writeEvent);
var readEvent = ctx.CreateEvent();
ctx.ReadBuffer(id.Slice<byte>(), output, readEvent);
bool flushOk = ctx.Flush();
Debug.Assert(flushOk);
bool eventOk = ctx.Wait(writeEvent);
Debug.Assert(eventOk);

// The event has completed.

input.Dispose();
Assert.IsTrue(ctx.IsCompleted(readEvent));
ctx.DestroyEvent(readEvent);
ctx.DestroyEvent(writeEvent);
ctx.DestroyBuffer(id);
for (int i = 0; i < length; ++i)
    Assert.AreEqual((byte)i, output[i]);
output.Dispose();
ctx.Dispose();
```

How to use Wait.
