Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


IsCompleted(EventID)

Returns true if the asynchronous operation completed.
Read time 1 minuteLast updated 10 days ago

Definition

public bool IsCompleted(EventID id)

Parameters

ID of the event to query.

Returns

Type

Description

boolTrue if the asynchronous operation has completed.

Remarks

This method returns immediately and does not wait for the operation to complete. Use RadeonRaysContext.Flush to force the device implementation to start processing commands. Use IDeviceContext.Wait to busy-wait for a specific event.
using System.Threading;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();Assert.IsTrue(flushOk);input.Dispose();var watchDogTimeout = Time.realtimeSinceStartup + 5.0f;while (!ctx.IsCompleted(readEvent)){ Thread.Sleep(10); if (Time.realtimeSinceStartup > watchDogTimeout) Assert.IsTrue(false, "watchdog timeout");}// The event has completed.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 check if an asynchronous operation has completed.