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