Быстрый поиск в Google принес этот результат: http://xahlee.org/java-a-day/this.html
В значительной степени ключевым словом «this» является ссылка на текущий объект (сам).
Основной вопрос с использованием Диспетчера (или BackgroundWorker) - то, что трудно протестировать, если Ваш ремень безопасности тестирования на самом деле не имеет поток UI.
SynchronizationContext. Это обеспечивает ту же способность вызвать на поток UI и работы в Windows или WPF. Тестирование его также возможный .
Думают о диспетчере, как являющемся только что другим сервисом. Поскольку Вы используете ПРИЗМУ, Вы знакомы со службами и МОК. Вот то, как такой сервис может использоваться:
// Not a UI component
public class MyDomainService : IMyDomainService
{
private readonly IDispatcher _dispatcher;
public MyDomainService(IDispatcher dispatcher)
{
_dispatcher = dispatcher;
}
private void GotResultFromBackgroundThread()
{
_dispatcher.Dispatch(() => DoStuffOnForegroundThread());
}
}
Это позволяет Вам занимать место в различных реализациях свою платформу/тестирование.
Вот пример IDispatcher, реализация WPF и тестовая реализация . Вы зарегистрировали бы их в своем контейнере МОК точно так же, как любой другой сервис, и они доступны и UI и другим сервисам.
да и нет.. это - вещь рендеринга.. не вещь поточной обработки по сути..
Диспетчер выбирает объекты работы на приоритетной основе и выполняет каждого к завершению. Каждый поток UI должен иметь по крайней мере одного Диспетчера, и каждый Диспетчер может выполнить объекты работы точно в одном потоке. согласно этому эта ссылка от Microsoft.
все еще необходимо обработать самостоятельно любые потоки, которые Вы запускаете сами.
Проверка этот для получения информации о: Многопоточное Программирование с Основанным на событии Асинхронным Шаблоном
Лично я использую Второстепенный Рабочий для моих потребностей поточной обработки.