W mojej aplikacji wpf (C#) długi proces wykonywany jest po naciśnięciu przycisku przez użytkownika. Po naciśnięciu przycisku do momentu zakończenia całego kodu okno zamarza, a użytkownik nie może wykonać żadnego innego zadania w oknie. W jaki sposób mogę uczynić kod kliknięcia przycisku jako proces w tle, aby okno stało się responsywne dla użytkownika. Próbowałem następującej metody, ale nie udało się.Spraw, aby wpf odpowiadał UI po kliknięciu przycisku
private void btn_convert_Click(object sender, RoutedEventArgs e)
{
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background,
new Action(() => {
WorkerMethod();
}));
}
Gdzie WorkerMethod jest funkcją z całym kodem. Wszelkie sugestie.
Pozdrawiam,
Sangeetha
To rozwiązanie działa dobrze, ale z wyjątkiem. W metodzie pracy mam kod wyłączania włączania przycisku, który daje wyjątek, wątek wywołujący nie może uzyskać dostępu do tego obiektu, ponieważ inny wątek jest jego właścicielem. – Sangeetha
@Sangeetha używać Dispatchera do włączania/wyłączania ONL – makc