private void Setup()
        {
            if (_cleanup != null)
            {
                return;
            }

            var taskComponent = AsyncTaskComponent;

            if (taskComponent == null)
            {
                return;
            }

            var element = AssociatedObject;
            var layer   = AdornerLayer.GetAdornerLayer(element);

            if (layer == null)
            {
                return;
            }

            var adc = new AdornerContentPresenter(element)
            {
                Content         = taskComponent,
                ContentTemplate = Template
            };

            _cleanup = new AdornerHandler(taskComponent.Executor, element, layer, adc);
        }
 public AdornerHandler(IAsyncTaskExecutor executor, FrameworkElement element, AdornerLayer layer, AdornerContentPresenter adorner)
 {
     _executor = executor;
     _element  = element;
     _layer    = layer;
     _adorner  = adorner;
     Start();
 }