ドキュメント

Unity Engine

Unity Engine

IsCompleted(EventID)

Returns true if the asynchronous operation completed.
読み終わるまでの所要時間 1 分最終更新 1ヶ月前

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.