Плагин WPF для создания стратегии пользовательского интерфейса - PullRequest
2 голосов
/ 08 января 2011

У меня есть приложение с возможностью загрузки некоторых плагинов (DLL).Это работает на WPF.Проблема заключается в лагах, когда плагин создает элементы управления пользовательского интерфейса.

В основном приложении у меня есть некоторые элементы управления.Я передаю эти ссылки плагину.Когда я вызываю метод плагина Show (), он должен добавить специальные элементы управления пользовательским интерфейсом в основное приложение.

Как создать элементы управления пользовательского интерфейса плагина в фоновом потоке и добавить их в основное приложение, если поток пользовательского интерфейса основного приложения неУ меня нет доступа к любому элементу управления, который был создан в другом потоке?

Я использую этот код в основном приложении:

if (!module.IsInitialized())
            {
                this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background, new Action(
                    delegate()
                    {
                        module.InitializeComponents();
                        module.ShowModule();
                    }
                ));
            } 

где метод инициализации плагина:

public void InitializeComponents()
{
MyBodyArea = new SERPBodyArea(); // there is UI control
MyBottomArea = new SERPBottomArea(); // there is UI control
 MyHeaderRibbon = new SERPXamRibbon(); // there is UI control

_IsInitialized = true;
}

Поэтому, когда плагин создает элементы управления пользовательским интерфейсом, мое основное приложение останавливается.Есть ли способ создать его в фоновом потоке и добавить его в главное окно приложения?

Спасибо.И извините за мой плохой английский: (.

1 Ответ

0 голосов
/ 09 января 2011

Вы должны продолжать создавать свои элементы управления в потоке пользовательского интерфейса, но вы можете сделать их более легкими и оптимизированными.Обычно это включает в себя откладывание некоторой инициализации элемента управления (чаще всего данных, с которыми связан элемент управления) в фоновый поток.Однако та же стратегия может применяться к вычислениям с интенсивным использованием ЦП или манипулированию структурой данных.

Если объем фактической работы, выполняемой в потоке пользовательского интерфейса, пропорционален объему информации, отображаемой на экране,тогда большинство приложений будет инициализироваться очень быстро.Ваша ситуация зависит от вашего контроля, поэтому трудно быть более конкретным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...