DispatcherQueueController.ShutdownQueueAsync 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
异步停止与此 DispatcherQueueController 关联的 DispatcherQueue,如果 DispatcherQueueController 是由 CreateOnDedicatedThread 创建的,则关闭线程。
此方法在启动关闭操作后立即返回异步操作 () ;但异步操作在关闭操作完成之前不会完成。
public:
virtual IAsyncAction ^ ShutdownQueueAsync() = ShutdownQueueAsync;
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction ShutdownQueueAsync();
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction ShutdownQueueAsync();
function shutdownQueueAsync()
Public Function ShutdownQueueAsync () As IAsyncAction
返回
异步操作,该操作将在队列调度其所有剩余工作后完成。
- 属性
示例
// Shut down the event loop.
public async void ShutdownLoop()
{
if (_queueController != null)
{
// The await will complete after the event loop exits.
await _queueController.ShutdownQueueAsync();
_queueController = null;
_queue = null;
}
}
// Another class that has access to the dedicated thread's DispatcherQueue.
public class ModuleA
{
public async void ShutdownSetup()
{
// Gets the DispatcherQueue for the dedicated thread.
// Invoked when the controller begins the ShutdownQueueAsync.
_dispatcherQueue.ShutdownStarting += (s, e) =>
{
// Queue is shutting down, do this last operation which
// will update state before the loop exits.
_queue.TryEnqueue(
() =>
{
FinalInThreadCleanup(_myState);
});
};
// Invoked after the DispatcherQueue event loop exits.
_dispatcherQueue.ShutdownCompleted += (s, e) =>
{
CleanUp(_myState);
};
}
}
注解
调用 ShutdownQueueAsync 时,将按以下顺序引发以下事件:
这些事件是 DispatcherQueue 对象的成员,其用途是通知侦听器 DispatcherQueue 正在关闭。 事件在运行 DispatcherQueue 事件循环本身的线程上引发。