Wenn der Fehler “delegatecommand.canexecutechanged Memory Leak” angezeigt wird, sollte dieser Blogbeitrag helfen.
Genehmigt: Fortect
Genehmigt: Fortect
Fortect ist das weltweit beliebteste und effektivste PC-Reparaturtool. Millionen von Menschen vertrauen darauf, dass ihre Systeme schnell, reibungslos und fehlerfrei laufen. Mit seiner einfachen Benutzeroberfläche und leistungsstarken Scan-Engine findet und behebt Fortect schnell eine breite Palette von Windows-Problemen - von Systeminstabilität und Sicherheitsproblemen bis hin zu Speicherverwaltung und Leistungsengpässen.
Ich habe vor kurzem die Arbeit an Desktopfunktionen abgeschlossen, die in WPF und C # mit MVVM-Mustern geschrieben wurden. In dieser mobilen App habe ich die Hauptimplementierung von Delegate Command verwendet, um die in meiner ModelView präsentierten ICommands-Elemente einzuschließen. Das Problem besteht darin, dass diese DelegateCommands verhindern, dass einige ModelViews teuer werden, nachdem die Ansicht geschlossen wurde. Es bleibt also verborgen, bis ich die gesamte Formularsyndication abbreche. Ich erstelle ein Profil für die Anwendung, mit der ich interagiere.Wie kann ich diesen Fall vermeiden und hängt es intern mit einigen der mvvm-Vorlagen zusammen oder handelt es sich um eine Vorlagenimplantation?. Vielen Dank.
Bearbeiten: Dies ist wirklich ein kleiner, aber erfolgreicher, aber vollständiger Teil der gesamten MVVM-Implementierung meines Partners
DelegateCommand-Klasse: ICommand ultimative öffentlich-persönliche Aktion ; eindeutiges Prädikat canExcute; public DelegateCommand (Aktion erledigt die Aufgabe, Prädikat kannAusführen) wenn es ist (run == null) eine neue Ausnahme auslösen ArgumentNullException ("execute"); this.execute entspricht Execute; this.canExcute CanExecute; = public bool CanExecute (Objektparameter) bereitgestellt (this.canExcute! = null) canExcute (Parameter) erneut verwenden; gibt wahr zurück; öffentliches Ereignis EventHandler CanExecuteChanged füge mehr hinzu CommandManager.RequerySuggested + = Wert; subtrahiere CommandManager.RequerySuggested - = Wert; public Execute (Parameter leere Parameter) this.execute (Parameter);
Polizeiklasse ViewModel: DependencyObject, INotifyPropertyChanged Private DelegateCommand printCommand; Öffentliches ICommand PrintCommand Wille sogar als ob (printCommand == null) printCommand entspricht new DelegateCommand (Print, CanExecutePrint); printCommand zurückgeben; Gebietsschema drucken (Objekt-Objekt) Console.WriteLine ("Druckauftrag"); bool CanExecutePrint (obj-Objekt) gibt wahr zurück; PropertyChangedEventHandler PropertyChanged für die öffentliche Veranstaltung geöffnet private void OnProeprtyChanged (String propertyName) if (PropertyChanged! iszero) PropertyChanged (dies, das neue PropertyChangedEventArgs (property_name));
public MainWindow () Initialisieren der Komponente (); Base .DataContext entspricht new ViewModel();
Beschleunigen Sie jetzt die Leistung Ihres Computers mit diesem einfachen Download.