清理任务队列示例

提供有关不再需要任务队列时如何进行清理,以避免资源泄露的示例。 但是,不能立即发布任务队列。 必须先终止并刷新,以确保其进行的任何查询都已运行,然后释放。

终止调用可设置为等待或立即返回。 如果没有等待回调,可以选择指定它在终止完全结束时收到通知。 如果存在任何手动端口,则在返回调度函数之前,必须继续调度这些端口。

XTaskQueueTerminate(taskQueue, false, nullptr, nullptr);
bool result;
do
{
    result = XTaskQueueDispatch(taskQueue, XTaskQueuePort::Completion, INFINITE);
} while (result == true);
XTaskQueueCloseHandle(taskQueue);

此示例通过使用 XTaskQueueTerminate 的等待参数以终止任务,但没有等待。 terminate调用向每个端口添加一个回调,以检测队列何时清空。 为了解释此操作以及任何先前排队的回调,dispatch会在调度返回false之前持续调用它。

另请参阅

XTaskQueue 库概述

创建任务队列(示例)

调度任务队列(示例)

设计任务队列

XTaskQueue