DispatcherQueueController.ShutdownQueueAsync Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Асинхронно останавливает DispatcherQueue, связанный с этим DispatcherQueueController, и завершает поток, если 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
Возвращаемое значение
Асинхронная операция, которая будет завершена после того, как очередь разослала все оставшиеся работы.
- Атрибуты
Примеры
// Shutdown 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 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 .