Как использовать WPFtoolkit busyindicator в приложении WPF - PullRequest
0 голосов
/ 04 сентября 2018

Я подал заявку в WPF, где я делаю долгий процесс конвертации. поэтому я хотел поместить окно индикатора выполнения, поэтому я использовал индикатор выполнения BusyIndicator из библиотеки wpftoolkit и пытался показать, когда начнется мое преобразование. Но когда я нажимаю на кнопку преобразования, это показывает исключение - «вызывающий поток не может получить доступ к этому объекту, потому что другой поток владеет им» ...

Мой код -

private void ConvertBtn_OnClick(object sender, RoutedEventArgs e)
{     
  Task.Factory.StartNew(() =>
  {
    ConversionToExcel();//My conversion methode
    for (int i = 0; i < 10; i++)
    {
      Dispatcher.Invoke(DispatcherPriority.Normal, new Action(
        () => { ProgressIndicator.BusyContent = string.Format("Inprogress, please wait..."); }
      ));
      Thread.Sleep(1000);
    }
  }).ContinueWith((task) => { ProgressIndicator.IsBusy = false; }, TaskScheduler.FromCurrentSynchronizationContext()
  );
}

1 Ответ

0 голосов
/ 04 сентября 2018

Установите IsBusy=true перед началом новой темы.

private void ConvertBtn_OnClick(object sender, RoutedEventArgs e)
{    
  ProgressIndicator.BusyContent = string.Format("Inprogress, please wait..."); 
  Task.Factory.StartNew(() =>
  {
    ConversionToExcel();//My conversion method

  }).ContinueWith((task) => { ProgressIndicator.IsBusy = false; }, TaskScheduler.FromCurrentSynchronizationContext()
  );
}

Кроме того, я думаю, что вы должны иметь свое собственное свойство IsBusy и связать его с ProgressIndicator.IsBusy в XAML.

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