यदि आप एमवीवीएम कर रहे हैं और कमांड का उपयोग कर रहे हैं, तो आप अक्सर व्यूमोडेल पर आईसीओएमएंड गुण देखेंगे जो निजी रिलेकॉमैंड या डेलेगेट कमांड फ़ील्ड द्वारा समर्थित हैं, इस उदाहरण की तरह मूल एमवीवीएम आलेख से MSDN:डब्ल्यूपीएफ एमवीवीएम में रिलेकॉमैंड/डिलीगेट कॉमांड को सरल बनाना
RelayCommand _saveCommand;
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new RelayCommand(param => this.Save(),
param => this.CanSave);
}
return _saveCommand;
}
}
हालांकि, इस अव्यवस्था का एक बहुत है, और नहीं बल्कि थकाऊ (मैं कुछ अनुभवी WinForms डेवलपर्स जो यह सब टाइपिंग पर भी मुंह के साथ काम) नए आदेश की स्थापना करता है। तो मैं इसे सरल बनाना चाहता था और थोड़ा सा खोदना चाहता था। मैंने {} ब्लॉक प्राप्त करने की पहली पंक्ति में ब्रेकपॉइंट सेट किया और देखा कि जब मेरा ऐप पहली बार लोड किया गया था तो यह केवल हिट हो गया था - मैं बाद में जितना चाहूं उतने कमांड को बंद कर सकता हूं और यह ब्रेकपॉइंट कभी हिट नहीं होता है - इसलिए मैं इस सरल करने के लिए मेरी ViewModels से कुछ अव्यवस्था को दूर करना चाहता था और पाया है कि निम्नलिखित कोड एक ही काम करता है:
public ICommand SaveCommand
{
get
{
return new RelayCommand(param => this.Save(), param => this.CanSave);
}
}
हालांकि, मैं के बारे में सी # या कचरा कलेक्टर पर्याप्त जानना चाहते हैं कि इस समस्या का कारण हो सकता है पता नहीं है, जैसे कुछ मामलों में अत्यधिक कचरा पैदा करना। क्या इससे कोई समस्या आएगी?
यदि आप वास्तव में अपने मेमोरी उपयोग के बारे में चिंतित हैं, तो क्या यह केवल उन आदेशों को तुरंत चालू करने के लिए समझ में नहीं आता है जिन्हें आप उपयोग करने जा रहे हैं? उदाहरण के लिए, यदि आपके पास एक वीएम है जो 3 कमांड का खुलासा करता है, और केवल एक का उपयोग किया जाता है, तो बाकी को छोड़ दें। यदि आप अपने सभी वीएम कमांड का उपयोग कर रहे हैं (जो आपको होना चाहिए), तो आलसी लोडिंग की आपकी प्रणाली अधिक मेमोरी और अधिक प्रोसेसर समय का उपयोग करेगी जो विशेष रूप से एम्बेडेड सिस्टम के लिए पहली जगह अनुकूलित करने के उद्देश्य को हरा देती है। –