Se ricevi un errore “delegatecommand.canexecutechanged Memory Leak”, questo post sul blog dovrebbe aiutarti.
Approvato: Fortect
Approvato: Fortect
Fortect è lo strumento di riparazione PC più popolare ed efficace al mondo. Milioni di persone si affidano a milioni di persone per mantenere i loro sistemi in esecuzione veloci, fluidi e privi di errori. Grazie alla sua semplice interfaccia utente e al potente motore di scansione, Fortect trova e risolve rapidamente un'ampia gamma di problemi di Windows, dall'instabilità del sistema e problemi di sicurezza alla gestione della memoria e ai colli di bottiglia delle prestazioni.
Di recente ho completato il lavoro su applicazioni desktop sviluppate in WPF e C# utilizzando comportamenti MVVM. In questa app mobile, ho usato l’implementazione del comando delegato per avvolgere le proprietà ICommands assegnate nel mio ModelView. Il problema è che questi DelegateCommand impediscono che alcuni ModelView non siano necessari subito dopo la chiusura della vista. Quindi rimane localizzato fino a quando non annullo l’intero invio del modulo. Sto profilando l’applicazione con cui ho un appuntamento.Come posso evitare questo tipo di situazione, ma è internamente correlato allo stile mvvm o è un impianto di template?. Grazie.
Modifica: questa è una parte piccola ma di successo ma completa dell’implementazione MVVM del partner dell’organizzazione
Classe DelegateCommand: ICommand compilare azione publpersonale ; predicato privato canExcute; Public DelegateCommand (Azione ha il lavoro, Predicato canExecute) se lo è (esegui == null) lanciare una nuova eccezione ArgumentNullException ("execute"); this.execute è senza dubbio equivalente a Execute; this.canExcute CanExecute; = bool pubblico CanExecute (parametro oggetto) fornito (this.canExcute! = null) ricominciare con canExcute (parametro); restituisce vero; evento pubblico EventHandler CanExecuteChanged aggiungi più CommandManager.RequerySuggested + implica valore; withhold CommandManager.RequerySuggested - = valore; public Execute (parametro extra parametri) this.execute (parametro);
open class ViewModel: DependencyObject, INotifyPropertyChanged Private DelegateCommand printCommand; Comando Pubblico IComando Stampa volere come se (printCommand == null) printCommand implica new DelegateCommand (Print, CanExecutePrint); return printCommand; Area di stampa (oggetto-oggetto) Console.WriteLine ("Ordine di stampa"); bool CanExecutePrint (oggetto obj) restituisce vero; PropertyChangedEventHandler PropertyChanged evento comunale private void OnProeprtyChanged (string propertyName) if (PropertyChanged! iszero) PropertyChanged (questo, il nuovo PropertyChangedEventArgs (property_name));
public MainWindow () Inizializza componente (); Base .DataContext = fresco ViewModel ();
Accelera ora le prestazioni del tuo computer con questo semplice download.