2012-04-12 3 views
-1

У меня есть приложение WPF, которое имеет сложный интерфейс с большой привязкой данных. Я использую асинхронные вызовы WCF для сервера для данных. Для получения данных с сервера требуется около 4 секунд, а для привязки XAML потребуется около 6 секунд. Чтобы получить уведомление пользователя, я дал индикатор занятости, который будет работать нормально (прогресс показывается на индикаторе выполнения) до тех пор, пока данные не будут достигнуты на стороне клиента. Когда я присваиваю этот результат XAML, он (индикатор занятости) станет безответственным (также главное окно). Это связано с единственной нитью пользовательского интерфейса? Можно ли отображать индикатор занятости в отдельном потоке (например, фоновом работнике) внутри асинхронного вызова WCF? Или любой другой хороший метод для обработки этого сценария?Занятый индикатор не реагирует на загрузку XAML

busyIndicator.IsBusy = true;  

ServiceAgentInstance.GetAll((s1, e1) =>  
    {  
     ObservableCollection<Model> collection = e1.Result; 
     busyIndicator.IsBusy = false; 
    }); 

Благодаря

+1

Просим выслать ваш код – ChrisF

+0

busyIndicator.IsBusy = true; ServiceAgentInstance.GetAll ((s1, e1) => { ObservableCollection коллекция = e1.Result; busyIndicator.IsBusy = ложь; }); – Dennis

+0

Редактировать код в вопросе – ChrisF

ответ

2

Это звучит, как вы делаете запрос WCF в потоке пользовательского интерфейса, которые следует избегать. Попробуйте использовать BackgroundWorker, чтобы сделать свой запрос, который должен высвободить ваш поток пользовательского интерфейса, чтобы оживить индикатор занятости.