2015-06-11 3 views
1

У меня есть дерево с простым деревом в нем.
У меня довольно простой вопрос о том, как решить проблему, которую у меня есть.C# WPF Tree View - SelectedItemChanged Post Processing?

Как только пользователь выбирает новый элемент дерева, я запускаю небольшой процесс в фоновом режиме с помощью события SelectedItemChanged. Процесс занимает от полутора до 1,5 секунд.

Проблема в том, что графический интерфейс тогда работает медленно. Элемент дерева, выбранный outgoes, становится синим до тех пор, пока процесс, выполняющийся в фоновом режиме, не будет выполнен.

Я думаю, что это заставит графический интерфейс работать более гладко, если я могу каким-то образом запустить процесс после того, как элемент дерева выделен синим цветом. Пользователю они визуально видят, что они изменили элемент, и к тому моменту, когда они видят изменение элемента, процесс, вероятно, будет выполнен.

Кто-нибудь знает, как это сделать?

ответ

2

Spawn процесс в случае «SelectedItemChanged» в новом потоке:

Task.Factory.StartNew(() => 
{ 
    // your code // 
}; 

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

Dispatcher.BeginInvoke(new Action(() => { // ui thread tasks here // };