版本:Unity 6 (6000.0)
语言英语
  • C#

RadeonRaysContext.IsCompleted

建议更改

成功!

感谢你帮助我们提高 Unity 文档的质量。尽管我们无法接受所有提交,但我们确实会阅读用户提出的每一项建议更改并在适用时进行更新。

关闭

提交失败

由于某些原因,无法提交你的建议更改。请在几分钟后,<a>重试</a>。感谢你花时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public bool IsCompleted(LightTransport.EventID id);

参数

id 要查询的事件 ID。

返回

bool 如果异步操作已完成,则返回 True。

说明

如果异步操作已完成,则返回 true。

此方法会立即返回,并且不会等待操作完成。使用 Flush 强制设备实现开始处理命令。使用 IDeviceContext.Wait 忙等特定事件。

          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(8);
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();

如何检查异步操作是否已完成。