Hey,
ich möchte einen Thread starten und abfangen, wenn der Thread fertig ist / seine Arbeit erledigt hat.
Das Ganze hängt mit einem ICommand zusammen, der dann das CanExecuteChanged-Event aufrufen soll.
Mein Lösungsansatz ist folgender:
Mein RunCommand ist ein normaler Command aus dem MVVM-Pattern.
Spoiler anzeigen
Allerdings greife ich dann von einen Thread auf einen anderen zu und deshalb tritt folgender Fehler auf:
Habe es auch schon so versucht, funktioniert aber auch nicht. Wende ich
Es wäre sehr nett, wenn ihr mir hier weiterhelfen könntet.
Viele Grüße,
Trudi
ich möchte einen Thread starten und abfangen, wenn der Thread fertig ist / seine Arbeit erledigt hat.
Das Ganze hängt mit einem ICommand zusammen, der dann das CanExecuteChanged-Event aufrufen soll.
Mein Lösungsansatz ist folgender:
Mein RunCommand ist ein normaler Command aus dem MVVM-Pattern.
C#-Quellcode
- public class ActionCommand : ICommand
- {
- private readonly Action<object> _executeHandler;
- private readonly Func<object, bool> _canExecuteHandler;
- public ActionCommand(Action<object> execute, Func<object, bool> canExecute)
- {
- if (execute == null)
- {
- throw new ArgumentNullException("execute cannot be null");
- }
- _executeHandler = execute;
- _canExecuteHandler = canExecute;
- }
- public event EventHandler CanExecuteChanged;
- public void Execute(object parameter)
- {
- _executeHandler(parameter);
- }
- public bool CanExecute(object parameter)
- {
- if (_canExecuteHandler == null)
- {
- return true;
- }
- return _canExecuteHandler(parameter);
- }
- public void RaiseCanExecuteChanged()
- {
- var handler = CanExecuteChanged;
- if (handler != null)
- {
- handler.Invoke(this, EventArgs.Empty);
- }
- }
- }
Allerdings greife ich dann von einen Thread auf einen anderen zu und deshalb tritt folgender Fehler auf:
Habe es auch schon so versucht, funktioniert aber auch nicht. Wende ich
lock
falsch an?Es wäre sehr nett, wenn ihr mir hier weiterhelfen könntet.
Viele Grüße,
Trudi